红移中的 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的主要内容,如果未能解决你的问题,请参考以下文章