给定另一个日期,创建日期的最简单方法是该月的第一天

时间:2020-03-06 14:36:14  来源:igfitidea点击:

在SQL Server中,最简单/最干净的方法是使日期时间基于另一个日期时间表示月份的第一天吗?例如,我有一个变量或者具有2005年3月3日14:23的列,我想得到2005年3月1日00:00(作为日期时间,而不是varchar)

解决方案

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

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日。最终结果是删除日期时间值的日期(和时间)部分。

像这样的东西会起作用。

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