أبسط طريقة لإنشاء التاريخ الذي هو أول يوم من الشهر ، بالنظر إلى موعد آخر

StackOverflow https://stackoverflow.com/questions/121581

  •  02-07-2019
  •  | 
  •  

سؤال

في SQL Server ما هو أبسط/أنظف طريقة لجعل التاريخ والوقت تمثل أول الشهر على أساس آخر datetime?على سبيل المثال لدي متغير أو عمود 3-Mar-2005 14:23 و أريد الحصول على 1-Mar-2005 00:00 (مثل التاريخ والوقت ، وليس كما varchar)

هل كانت مفيدة؟

المحلول

Select DateAdd(Month, DateDiff(Month, 0, GetDate()), 0)

لتشغيل هذا على عمود استبدال GetDate() مع اسم العمود.

خدعة هذا الرمز مع DateDiff.DateDiff بإرجاع عدد صحيح.المعلمة الثانية (0) يمثل 0 تاريخ في SQL Server الذي هو 1 يناير 1900.لذا datediff بحساب عدد صحيح من أشهر منذ يناير 1, 1900, ثم يضيف أن عدد أشهر إلى 1 يناير 1900.الأثر الصافي هو إزالة اليوم (الوقت) جزء من قيمة.

نصائح أخرى

SELECT DATEADD(mm, DATEDIFF(mm, 0, @date), 0)

شيء مثل هذا العمل....

UPDATE YOUR_TABLE
SET NewColumn = DATEADD(day, (DATEPART(day, OldColumn) -1)*-1, OldColumn)

مجرد استخدام

DATEADD(DAY, 1-DAY(@date), @date)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top