Самый простой способ создать дату, которая является первым днем месяца, учитывая другую дату
-
02-07-2019 - |
Вопрос
В SQL Server какой самый простой/чистый способ создать дату и время, представляющую первое число месяца, на основе другой даты и времени?например, у меня есть переменная или столбец с 3 марта 2005 г. 14:23, и я хочу получить 1 марта 2005 г. 00:00 (как дату и время, а не как varchar)
Решение
Select DateAdd(Month, DateDiff(Month, 0, GetDate()), 0)
Чтобы запустить это для столбца, замените GetDate() именем вашего столбца.
Хитрость этого кода заключается в использовании DateDiff.DateDiff возвращает целое число.Второй параметр (0) представляет дату 0 в SQL Server, то есть 1 января 1900 года.Итак, функция dateiff вычисляет целое число месяцев, прошедших с 1 января 1900 года, а затем прибавляет это количество месяцев к 1 января 1900 года.Конечным эффектом является удаление части дня (и времени) значения datetime.
Другие советы
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)