Самый простой способ создать дату, которая является первым днем ​​месяца, учитывая другую дату

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

  •  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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top