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

时间:2012-12-08 11:55:35

标签: sql-server sql-server-2008 datetime2

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

select dateadd(day, datediff(day, 0, @inDate), 0)

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

但是我很难想出一些适合datetime2类型的东西。问题是SQL Server没有权限从整数转换为datetime2类型。

是否存在从datetime2剥离时间部分的等效确定性方法?

1 个答案:

答案 0 :(得分:12)

你不能只做一个

ALTER TABLE dbo.YourTable
ADD DateOnly AS CAST(YourDate AS DATE) PERSISTED

CAST(... AS DATE)将您的datetime2列变为“仅限日期”,并且它似乎足够确定性,可用于持久的计算列定义......