10

在 SQL Server 中,根据另一个日期时间制作表示本月第一天的日期时间的最简单/最干净的方法是什么?例如,我有一个 2005 年 3 月 3 日 14:23 的变量或列,我想获得 2005 年 3 月 1 日 00:00(作为日期时间,而不是 varchar)

4

4 回答 4

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

要在列上运行此操作,请将 GetDate() 替换为您的列名。

这段代码的诀窍在于 DateDiff。DateDiff 返回一个整数。第二个参数(0)表示 SQL Server 中的 0 日期,即 1900 年 1 月 1 日。因此,datediff 计算自 1900 年 1 月 1 日以来的整数月数,然后将该月数添加到 1900 年 1 月 1 日。净效果是删除日期时间值的日期(和时间)部分。

于 2008-09-23T15:06:55.263 回答
7
SELECT DATEADD(mm, DATEDIFF(mm, 0, @date), 0)
于 2008-09-23T15:05:57.857 回答
2

像这样的东西会起作用....

UPDATE YOUR_TABLE
SET NewColumn = DATEADD(day, (DATEPART(day, OldColumn) -1)*-1, OldColumn)
于 2008-09-23T15:09:26.320 回答
0

只需使用

DATEADD(DAY, 1-DAY(@date), @date)
于 2015-01-05T15:15:33.650 回答