السلام عليكم ورحمة الله وبركاته
بحث كثيراً عن البديل فلم اجد سوى دالة DATEPART تعمل في sql server فقط
كود :
SELECT DATEPART(wk, GETDATE());
select DATEPART(WK, '01/03/2016');
او//
DECLARE @date date = '2024-07-20';
SELECT
DATEPART(week, @date) AS week,
DATEPART(wk, @date) AS wk,
DATEPART(ww, @date) AS ww;
Result:
+--------+------+------+
| week | wk | ww |
|--------+------+------|
| 29 | 29 | 29 |
+--------+------+------+
فهل من بديل؟
(01-07-2021, 07:13 PM)ALG2009 كتب : [ -> ]وعليك السلام
جرب
كود :
DATE_ADD(time_stamp, INTERVAL DATEDIFF('2010-12-31', time_stamp) DAY)
(01-07-2021, 09:14 PM)larbiparadox كتب : [ -> ]وعليك السلام ورحمة الله وبركاته
سؤالك ناقص لم تحدد قاعدة البيانات التي تعمل عليها
بالنسبة لـ Firebird
البديل لـ DATEPART هي EXTRACT
المعذرة على عدم ذكر قاعدة البيانات absolute ولذلك date_add لم تعمل
اما extract في تعمل فقط مع day , month , year
(03-07-2021, 11:43 AM)samnaj00 كتب : [ -> ] (01-07-2021, 07:13 PM)ALG2009 كتب : [ -> ]وعليك السلام
جرب
كود :
DATE_ADD(time_stamp, INTERVAL DATEDIFF('2010-12-31', time_stamp) DAY)
(01-07-2021, 09:14 PM)larbiparadox كتب : [ -> ]وعليك السلام ورحمة الله وبركاته
سؤالك ناقص لم تحدد قاعدة البيانات التي تعمل عليها
بالنسبة لـ Firebird
البديل لـ DATEPART هي EXTRACT
المعذرة على عدم ذكر قاعدة البيانات absolute ولذلك date_aad لم تعمل
اما extract في تعمل فقط مع day , month , year
* الدلفي بحر واسع من الاوامر ، يمكن الحصول على أي نتيجة بطرق و أفكار معقدة
* في حالة absolute يمكنك العمل الفلترة بين تاريخين ، وذلك من تاريخ معين نستخرج رقم الاسبوع و بعدها نستخرج تاريخ بداية الاسبوع و النهاية
نصرح بالمتغيرات التالية dt للتاريخ ، sd لحجز بداية التاريخ wk رقم الاسبوع
كود :
var
dt,sd :TDateTime;
wk :Integer;
تحويل نص التاريخ 20-07-2024 إلى تاريخ
كود :
dt := EncodeDate(2024,07,20);
معرفة رقم الاسبوع من التاريخ
كود :
wk := WeekOfTheYear(dt);
معرفة تاريخ بداية الاسبوع المحدد برقم
كود :
sd := StartOfAWeek(YearOf(dt), wk);
لمعرفة تاريخ نهاية نضيف 6 إلى sd
الان لدينا التارخين المطلوبين
(03-07-2021, 06:55 PM)larbiparadox كتب : [ -> ]* الدلفي بحر واسع من الاوامر ، يمكن الحصول على أي نتيجة بطرق و أفكار معقدة
صحيح صدقت استاذي الكريم وهنا تأتي الخبرة في استخدام الاكواد
(03-07-2021, 06:55 PM)larbiparadox كتب : [ -> ]* في حالة absolute يمكنك العمل الفلترة بين تاريخين ، وذلك من تاريخ معين نستخرج رقم الاسبوع و بعدها نستخرج تاريخ بداية الاسبوع و النهاية
نصرح بالمتغيرات التالية dt للتاريخ ، sd لحجز بداية التاريخ wk رقم الاسبوع
كود :
var
dt,sd :TDateTime;
wk :Integer;
تحويل نص التاريخ 20-07-2024 إلى تاريخ
كود :
dt := EncodeDate(2024,07,20);
معرفة رقم الاسبوع من التاريخ
كود :
wk := WeekOfTheYear(dt);
معرفة تاريخ بداية الاسبوع المحدد برقم
كود :
sd := StartOfAWeek(YearOf(dt), wk);
لمعرفة تاريخ نهاية نضيف 6 إلى sd
الان لدينا التارخين المطلوبين
جزاك الله خيراً
ما هي صيغة الاستعلام للحصول على رقم الاسبوع من جدول فيه عمود تاريخ my_dale ؟؟
قبل طرح الموضوع
عملت على جلب رقم الاسبوع عن طريق for وكانت النتيجة تمام على اعتبار السبت اول الاسبوع
ل
كنني بانتظار الحل بالـ SQL
كود :
With ABSTable1 Do
begin
First;
while Not EOF do
begin
Edit;
ABSTable1num_week.Value := WeekOfTheYear(ABSTable1date_sale.Value + 2);
Post;
Next;
end;
end;
عدلت على الكود ليتم بالاضافة للكود السابق جلب اول الاسبوع ونهاية الاسبوع
كود :
With ABSTable1 Do
begin
First;
while Not EOF do
begin
Edit;
ABSTable1num_week.Value := WeekOfTheYear(ABSTable1date_sale.Value + 2);
wk := WeekOfTheYear(ABSTable1date_sale.AsDateTime);
sd := StartOfAWeek(YearOf(ABSTable1date_sale.AsDateTime), wk);
ABSTable1date_First.Value := sd -2;
ABSTable1date_End.Value := sd + 4;
Post;
Next;
end;
end;
لكن حصل مشكلة وهي أن تاريخ 1/1/2021 هو يوم الجمعة ورقم اسبوعه هو 53 لذلك تظهر رسالة تفيد بأن (1 /
53 / 2021) ليس تاريخاً
الخطأ ليس من عندك ،
كما نعلم أن عدد الأسابيع في السنة هو 52 ، لكن رقم رقم أسبوع 01-01-2021 هو 53 ، لكن الدالة StartOfAWeek لا تقبل 53 ... امر غريب !!!! ، عدلها برمجيا اذا كانت تساوي 53 اعدها الى 52
* سؤال : لماذا تظهر التاريخ بهذا الشكل
![[صورة: 796262689.png]](https://www4.0zz0.com/2021/07/06/20/796262689.png)
(06-07-2021, 09:00 PM)larbiparadox كتب : [ -> ]* سؤال : لماذا تظهر التاريخ بهذا الشكل
بما انني في وضع التصميم اظهرت اسم اليوم في التاريخ لأتأكد من او يوم واخر يوم في الاسبوع
بالنسبة لـ dddd
يبدو ان ddd او dddd لاظهار اسم اليوم