Конвертировать Юлианские даты в григорианские даты в импале

У меня есть таблица с датами в юлианских датах, и я хотел бы преобразовать эти даты в календарные даты.

Вот образец моей юлианской даты: 2457395.

В календарной дате должно быть: 07012016 (ДДММГГГГ).

Я пытался преобразовать дату в число дней с (01.01.1900), но даже если я не знаю, как ввести дату с количеством дней.

Спасибо заранее!

2 ответа

Импала не поддерживает даты, только временные метки; и он не имеет много функций форматирования даты / времени; поэтому вы должны быть творческими, например,

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           

Хорошо, если это юлианская дата JDE, например, 118163 для 12-06-2018, то нижеприведенный код можно использовать date_add (to_timestamp (concat(substr(cast(cast(118162 + 1900000 как int) как строка),1,4),'01','01'),'yyyyMMdd'), приведение (substr (приведение (приведение (118162 + 1900000 как int) как строка),5,3) как int)-1)

Другие вопросы по тегам