【问题标题】:Convert timestamp into date and time Sql将时间戳转换为日期和时间Sql
【发布时间】:2017-04-06 22:07:28
【问题描述】:

如何在 Teradata SQL 中将时间戳(格式如下:1,437,538,735.00)转换为日期和时间(例如 2016-11-23 14:00:00)?

谢谢!

【问题讨论】:

标签: sql teradata epoch


【解决方案1】:

这看起来像 Unix 格式的时间,所以它是自 1970-01-01 以来的秒数。像这样的东西应该可以工作:

select timestamp '1970-01-01 00:00:00' + interval '1437538735' second

我手头没有 Teradata 来专门测试语法。

【讨论】:

  • 恐怕我对 Teradata 很陌生,所以我不确定其余的语法。会不会是:CAST(timestamp '1970-01-01 00:00:00' + interval '1437538735') AS FINAL_DATE
  • 问题是 teradata 不接受超过 9999 的间隔子句
【解决方案2】:

试试这个:

select CAST(DATE '1970-01-01' + (1437538735 / 86400) AS TIMESTAMP(0)) + ((1437538735 MOD 86400) * INTERVAL '00:00:01' HOUR TO SECOND) td_ts

【讨论】:

    【解决方案3】:
    select timestamp '1970-01-01 00:00:00' + 1437538735 * interval '0 00:00:01' day to second
    

    附言
    使用这种语法,您可以使用列/表达式而不是硬编码值

    【讨论】:

    • 应该是select timestamp '1970-01-01 00:00:00' + 1437538735 * interval '0000 00:00:01' day to second,但无论如何它都会失败,因为它已经超过27年了:-)
    • 该死的。移动的。 OOO :-)
    • @dnoeth,当然关于 27 年,但我的另一个错误是首先使用day(4)。括号不适用于文字。
    猜你喜欢
    • 2016-06-07
    • 2017-12-12
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    相关资源
    最近更新 更多