我有一个表,其中的日期是朱利安日期,我想把这些日期转换成日历日期。这是一个朱利安日期的样本:2457395。日历日期应为:07012016(ddmmyyyy)。我试图将日期转换为自(1900年1月1日)以来的天数,但即使我不知道如何使用天数作为输入的日期。非常感谢!
w1e3prcc1#
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
50few1ms2#
如果是jde朱利安日期,例如2018年6月12日的118163,那么下面的代码可以用来添加日期(到时间戳(concat(cast(cast(118162+1900000 as int)as string),1,4),'01','01'),'yyyymmdd'),cast(substr(cast(118162+1900000 as int)as string),5,3)as int)-1)
2条答案
按热度按时间w1e3prcc1#
Impala 不支持日期,只支持时间戳;它没有太多的日期/时间格式特性;所以你需要有创造力。
样本输出:
50few1ms2#
如果是jde朱利安日期,例如2018年6月12日的118163,那么下面的代码可以用来添加日期(到时间戳(concat(cast(cast(118162+1900000 as int)as string),1,4),'01','01'),'yyyymmdd'),cast(substr(cast(118162+1900000 as int)as string),5,3)as int)-1)