【问题标题】:T-SQL DateDiff between the times but 1 datecolumn is 1900时间之间的 T-SQL DateDiff 但 1 日期列是 1900
【发布时间】:2014-02-06 14:38:32
【问题描述】:

我有一列包含两个日期,其中 1 个日期具有正确的日期和时间,因此我可以轻松比较此日期和 GetDate() 之间的分钟数,但有些值的日期为 01/01/1900然后是我需要使用的时间。

如何进行 datediff 但忽略日期而只使用时间?

所以

My date   | 01/01/1900 14:25:00
GetDate() | 06/02/2014 14:26:00

给我 1 分钟

【问题讨论】:

  • 那么,当日期为19000101 时,您假设它是今天?

标签: sql-server-2008 tsql datediff


【解决方案1】:

将您的日期时间转换为时间数据类型,然后一切都按预期工作。

例如:

Declare @d1 DateTime,
        @d2 DateTime

Select  @d1 = '01/01/1900 14:25:00',
        @d2 = '06/02/2014 14:26:00'

Select DATEDIFF(minute, Convert(Time, @d1), Convert(Time, @d2))

在 SQL2008 中添加了时间数据类型(您已在问题中标记)。

【讨论】:

  • 这似乎是正确的答案,但它假设日期总是应该是今天。 Op 说关于19000101,但没有具体说明其余日期
  • 该表将始终填充 19000101 日期,因此我将此解决方案标记为答案。
  • 这回答了问题的最后一行,“我怎样才能做 datediff 但忽略日期而只使用时间?”。如果还有更多内容,我希望 OP 会这么说。
  • @user3219693 那么这是正确的答案。虽然如果您不需要日期部分,那么您应该使用 TIME 列而不是 DATETIME 一个
猜你喜欢
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 2021-09-19
  • 2014-10-02
  • 1970-01-01
  • 2020-09-15
  • 1970-01-01
  • 2021-10-18
相关资源
最近更新 更多