【问题标题】:SQL Server 2008: Get date part from datetime2SQL Server 2008:从 datetime2 获取日期部分
【发布时间】:2012-12-08 11:55:35
【问题描述】:

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

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

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

但是,我正在努力想出适用于 datetime2 类型的东西。问题是 SQL Server 不允许将整数转换为 datetime2 类型。

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

【问题讨论】:

  • SELECT CONVERT(DATE, @inDate) 怎么样?或者SELECT CONVERT(DATETIME2, CONVERT(DATE, @inDate)),如果您需要返回DATETIME2。

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


【解决方案1】:

你不能做一个

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

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

【讨论】:

  • 我想是的!使用 datetime 进行强制转换不是确定性的,但显然可以与 date 和 datetime2 一起使用...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多