Преобразование даты по юлианскому календарю в Oracle SQL null

Я хочу преобразовать юлианские даты в обычные даты (из базы данных JDE). Я запускаю этот запрос:

select to_date(to_char((DATE+1900000)),'YYYYDDD') from table ;

И я получаю следующую ошибку:

ORA-01848: day of year must be between 1 and 365 (366 for leap year).

Я знаю, это потому, что некоторые даты являются нулевыми или не имеют значений.

Может ли кто-нибудь помочь мне в этом, пожалуйста?


person TableauHangover    schedule 13.12.2017    source источник
comment
to_char((DATE+1900000)) не имеет никакого смысла. Какой тип данных имеет столбец DATEdate — ужасное имя для столбца даты)   -  person a_horse_with_no_name    schedule 10.01.2018


Ответы (1)


Я воспроизвел ваш запрос и попробовал разные значения. Только если значение даты равно «0», вы получите эту ошибку:

ORA-01848: "день года должен быть между 1 и 365 (366 для високосного года)"

Поэтому я подумал, что, возможно, вы заинтересованы в том, чтобы избежать значений «0», и вы можете избежать этого с помощью простого where, например этого:

SELECT to_date(to_char((DATE+1900000)),'YYYYDDD') 
FROM table 
WHERE DATE != 0; 
person rencinas    schedule 10.01.2018