【问题标题】:Teradata Convert Integer to a timestampTeradata 将整数转换为时间戳
【发布时间】:2017-03-29 11:31:22
【问题描述】:

我正在尝试从具有日期范围的表中选择数据 它有点混乱,因为它是从 JAVA 作为 20160101 (YYYYMMDD) 形式的整数传递的

所以基本上我希望能够运行类似的查询(顺便说一下,这是在查询中工作的时间戳类型)

SELECT * FROM TABLE_A as t
WHERE t_timestamp >='2016-10-01 00:00:00'

我在 google 和 SO 上环顾四周,想出了类似的东西

SELECT CAST(20161001 AS DATE FORMAT 'YYYY-MM-DD') || ' 00:00:00'

这是为了尝试将整数转换为可以作为日期范围接受的时间戳。这似乎不起作用。没有错误,只是当我静态添加时间戳时的结果与我尝试使其通用时的结果不存在

谁能帮忙?

【问题讨论】:

    标签: date teradata


    【解决方案1】:

    如果你想在下面的查询中使用字符值应该可以 sel (CAST('20161001' AS DATE FORMAT 'yyyymmdd')(format 'yyyy-mm-dd')(char(10)))|| '00:00:00'

    下面的查询将值转换为时间戳(0)

    sel cast((CAST('20161001' AS DATE FORMAT 'yyyymmdd')(format 'yyyy-mm-dd')(char(10)))|| ' 00:00:00' as timestamp(0))
    

    【讨论】:

      【解决方案2】:

      你看SELECT CAST(20161001 AS DATE FORMAT 'YYYY-MM-DD')的结果了吗?它返回'3916-10-01',你可能没有像tghat这样的数据:-)

      对字符串应用类型转换,然后转换为日期:

      WHERE t_timestamp >= Cast(Trim(20161001) AS DATE Format 'YYYYMMDD')
      

      【讨论】:

        猜你喜欢
        • 2020-10-08
        • 2022-07-20
        • 2018-12-03
        • 2017-07-02
        • 1970-01-01
        • 2018-11-30
        • 1970-01-01
        • 2018-08-25
        • 2018-02-10
        相关资源
        最近更新 更多