我一直在使用这个非常方便的方法从日期时间值中提取日期部分:
select dateadd(day,datediff(day,@inDate),0)
这基本上将日期的时间部分清零.它很快,更重要的是它是确定性的 – 您可以在持久计算列,索引视图等中使用此表达式.
但是我很难想出一些适用于datetime2类型的东西.问题是sql Server没有权限从整数到datetime2类型的转换.
是否有一个等同的,确定性的方法从datetime2剥离时间部分?
解决方法
你不能只做一个
ALTER TABLE dbo.YourTable ADD DateOnly AS CAST(YourDate AS DATE) PERSISTED
CAST(… AS DATE)将您的datetime2列转换为“仅限日期”,并且它似乎足够确定性,可用于持久的计算列定义…