【问题标题】:Get second between TIMESTAMP field and CURRENT_TIMESTAMP在 TIMESTAMP 字段和 CURRENT_TIMESTAMP 之间获得第二个
【发布时间】:2017-01-26 01:47:50
【问题描述】:

我想知道,到日期时间之间的秒数

我的一个领域是CreateDate(it's Timestamp),另一个是CURRENT_TIMESTAMP(current date)

所以我要做的是:

((CreateDate)- CURRENT_TIMESTAMP) AS Result_Seconds

但是我收到了这个错误:

将表达式转换为数据类型日期时间时出现算术溢出错误。

【问题讨论】:

  • SQL Server 中TIMESTAMP 类型的列与日期和时间绝对无关 - 它只是一个二进制计数器
  • @marc_s 你有什么建议
  • 我建议您根本无法确定 TIMESTAMP 和当前日期之间的秒数 - 因为 TIMESTAMPNO 日期/时间价值。

标签: sql-server datetime timestamp


【解决方案1】:

您可以将timestamp 转换为datetime,然后使用DATEDIFF

SELECT DATEDIFF(
                SECOND,
                CAST(Column1 as datetime),
                CAST(CURRENT_TIMESTAMP as datetime)
                ) Result_Seconds
FROM yourtable

或者正如 MSDN 所说的 CURRENT_TIMESTAMP

此函数是与 GETDATE 等效的 ANSI SQL。

所以你可以使用:

SELECT DATEDIFF(
                SECOND,
                CAST(Column1 as datetime),
                GETDATE()
                ) Result_Seconds
FROM yourtable

【讨论】:

  • 在 sql 项目中使用 DATEDIFF 是个错误,因为对于大数据它不起作用
  • 2,147,483,647 秒太小了吗?然后以秒为单位使用 unix 时间戳(bigint)并使用它。 AFAIK 在 SQL Server 2016 中添加了返回 bigint 值的 datediff 模拟。
猜你喜欢
  • 2010-11-23
  • 2019-06-23
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多