【问题标题】:juliandate to normaldate in redshift红移中的 juliandate 到 normaldate
【发布时间】:2017-04-20 08:19:01
【问题描述】:

我在红移数据库中的数字类型列中有日期,例如 117106、117107。明白格式是朱利安格式。我想把它改成正常的日期格式,比如 yyyymmdd。

我尝试将函数应用于列,它返回的值如下 选择 to_date(117106) - 结果 4393-07-10

请帮忙。

提前致谢

【问题讨论】:

    标签: amazon-redshift etl


    【解决方案1】:

    这是如何完成的。
    它的工作方式是前 3 位是世纪朱利安偏移量,后 3 位是日期偏移量:

    select dateadd(day,117106 % 1000,dateadd(year,(117106 /1000),convert(datetime,'01/01/1900')))-1
    

    如果我做了一个错误的假设,请发表评论,我会重新调整我的答案。

    【讨论】:

      【解决方案2】:

      感谢拉胡尔的帮助。

      我没有尝试提供的解决方案。但是我已经实现了以下解决方案,将其转换为日期格式

      trim(cast(to_char(dateadd(days,cast(right(x)as bigint)) + datediff(days,'1900-01-02',to_date(cast(left((1900+(x/1000)),4) as char(4)) || '-01' || '-01', 'yyyy-mm-dd')),'1900-01-01'), 'YYYYMMDD') 作为十进制),0) 作为 x

      【讨论】:

        猜你喜欢
        • 2016-05-23
        • 2014-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-22
        相关资源
        最近更新 更多