红移中的 juliandate 到 normaldate

Posted

技术标签:

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

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

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

请帮忙。

提前致谢

【问题讨论】:

【参考方案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

【讨论】:

以上是关于红移中的 juliandate 到 normaldate的主要内容,如果未能解决你的问题,请参考以下文章

如何计算红移中的MTD

胶水加载作业不保留红移中的默认列值

亚马逊红移中的上次更新查询计数

红移中的长真空

红移中的 PERCENTILE_CONT()

红移中的 REGEXP_REPLACE