将impian日期转换为impala中的格里高利日期

时间:2016-12-14 13:56:45

标签: date impala julian

我有一个表格,其中的日期是朱利安日期,我想将这些日期转换为日历日期。

以下是我所拥有的朱利安日期的样本:2457395。

在日历日期中,它应为:07012016(DDMMYYYY)。

我尝试将日期转换为自(01/01/1900)以来的天数,但即使我不知道如何将日期作为输入日期。

非常感谢提前!

2 个答案:

答案 0 :(得分:1)

Impala不支持日期,只支持时间戳;它没有很多日期/时间格式化功能;所以你需要有创意,例如

select JULIAN_DATE,
  adddate('1900-01-01 00:00:00Z', JULIAN_DATE -2415021) as AS_TIMESTAMP,
  to_date(adddate('1900-01-01 00:00:00Z', JULIAN_DATE -2415021)) as AS_ISO_DATE_STRING,
  from_unixtime(unix_timestamp(adddate('1900-01-01 00:00:00Z', JULIAN_DATE -2415021)), "ddMMyyyy") as AS_DMY_DATE_STRING
from WHATEVER

示例输出:

julian_date as_timestamp        as_iso_date_string as_dmy_date_string 
----------- ------------------- ------------------ ------------------ 
2457395     2016-01-07 00:00:00 2016-01-07         07012016           

答案 1 :(得分:0)

如果这是一个JDE朱利安日期,例如2018年6月6日的118163,那么可以使用以下代码     date_add(to_timestamp(concat(substr(cast(cast(cast(118162 + 1900000 as int))as string)),1,4),'01','01'),'yyyyMMdd'),     cast(substr(cast(cast(cast(118162 + 1900000 as int)as string),5,3)as int)-1)