الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تحويل باستخدام الاستعلام

مغلق
بدأه M.Hussein في 17 يونيو 2006 · 5 رد · 640 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ارجو المعذرة قد تكون هذه أولي مشاركاتي واتمني ان لا تكون الاخيرة بفضل معاونتكم الصادقة - وانني مبثدئ في ال SQL

ولدي استفسار

لدي جدول به عمودين ونوعهما Char ويحتوي على ارقام بداخلهم

فهل من الممكن الاستعلام عن مجموعهما الكلي

مثال للجدول يحتوي هلى

Reg OT

1.30 8.30

1.00 8.00

1.15 8.00

واريد الاستعلام عن مجموع كل هذه الساعات

فهل من طريقة

شكرا جزيل

#2

وضحلي سؤالك

إذا بدك تعمل حساب يوجد نوع بيانات Int

و إذا بدك تستخدم الفاصلة float

و عندما تكون البيانات في هذين النوعين يمكن عمل أي عملية رياضية علييهم

لكن أنا يلي ما عم افهموا ليش عامل نوع اليبانات char

و انت حابب تطبق ليهم عمليات رياضية

سلام

#3

السلام عليكم

يمكنك استخدام الدوال التاليه للتحويل بين الأنواع

Cast

Convert

SELECT  CAST(yourchar AS int)
FROM yourtable

CONVERT(float, yourchar)

انا لا أعرف نظام الداتا بييز اللي تحت ايديك

بس اظن لو القيم علي هتبقي int او float

الأفضل انك نستخدم float بدل من char

و لو هتستخدم char يبقي الأفضل تستخدم nvarchar

#4

اخي العزيز

اعتقد انه يجب تحويلها اولا الي DateTime

وذلك حسب ما فهمت من كلامك انك تريد جمع حقل الساعات

فعند جمع مثلا 1.30 + 1.40 = 3.10 وليس 2.70

لذلك يجب تحويل حقل Char الي datetime

لكي يفعهم SQL ان هذا الرقم ساعات و دقائق و ليس ارقام عادية

#5

ألاخوة الكرام

جزاكم الله عني وعن الجميع خير الجزاء

أخي عادل معني كلامك انني لو حلوتهم الي datetime استطيع أن اجري العمليات الحسابيه عليهم على أنهم ساعات - ارجو توضيح ذلك لأنني فعلا اريد جمعهم كساعات حتي احصل على السعات المستهلكة

وشكرا

#6

اخي العزيز

يجب ان يكون الحقل المراد تخزين الزمن به من نوع nvarchar او اي نوع مثله

ايضا يجب تخزين التوقيت بهذا الشكل HH:MM مثال 01:35

فعند تخزين

01.30

01.40

يكون الناتج

03.10 وذلك بالساعات و الدقائق

03.166666 بالارقام العشرية

هذا الاستعلام ياتي بالاجمالي كأرقام العشرية

SELECT     CAST(SUM(DATEDIFF(n, '1900-1-1', CAST('1900-1-1 ' + ColumnName AS DATETIME))) AS decimal) / 60 AS Expr1
FROM TableName

تم تعديل هذه المشاركة بواسطة adel_elgo في 19 يونيو 2006 في 11:57

هذا الموضوع مغلق.

مواضيع مشابهة