SQL Server 2008:从datetime2获取日期部分

Tre*_*ent 8 sql-server datetime2 sql-server-2008

我一直在使用这个非常方便的方法从datetime值中提取日期部分:

select dateadd(day, datediff(day, 0, @inDate), 0)
Run Code Online (Sandbox Code Playgroud)

这基本上将日期的时间部分清零.它很快,更重要的是它是确定性的 - 您可以在持久计算列,索引视图等中使用此表达式.

然而,我正在努力想出一些适用于该datetime2类型的东西.问题是SQL Server没有权限从整数到datetime2类型的转换.

是否有一种等效的,确定性的方法来剥离时间部分datetime2

mar*_*c_s 13

你不能只做一个

ALTER TABLE dbo.YourTable
ADD DateOnly AS CAST(YourDate AS DATE) PERSISTED
Run Code Online (Sandbox Code Playgroud)

CAST(... AS DATE)将您DATETIME2列到"日期只",这似乎是不够的确定性在坚持着,计算列定义中使用...

  • 大概吧!使用datetime进行强制转换不是确定性的,但显然可以与date和datetime2一起使用... (2认同)