/ / to_date w HANA z mieszanymi formatami dat - data, format, hana, to-date

to_date w HANA z mieszanym formatem daty - data, format, hana, do tej pory

Co możesz zrobić, jeśli masz różne formaty dat w źródle?

Mam przypadek, w którym używamy to_date funkcja, aby uzyskać informacje z tabeli, ale pojawia się błąd, ponieważ niektóre rekordy mają format daty YYYY-DD-MM zamiast YYYY-MM-DD

Jak zastosować do tego jednolite rozwiązanie?

Odpowiedzi:

1 dla odpowiedzi № 1

Aby poradzić sobie z tą sytuacją (dowolny tekst powinien zostać przekształcony w strukturalną wartość daty), prawdopodobnie pracowałbym z wyrażeniami regularnymi.

W ten sposób możesz wybrać zestaw rekordów pasujących do formatu, który chcesz obsługiwać, i przeprowadzić konwersję typu na tych rekordach.

Na przykład:

create column table date_vals (dateval nvarchar (4000), date_val date)

insert into date_vals values ("2018-01-23", NULL);
insert into date_vals values ("12/23/2016", NULL);

select dateval, to_date(dateval, "YYYY-MM-DD") as SQL_DATE
from date_vals
where
dateval like_regexpr "[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}"

union all

select dateval, to_date(dateval, "MM/DD/YYYY") as SQL_DATE
from date_vals
where
dateval like_regexpr "[[:digit:]]{2}/[[:digit:]]{2}/[[:digit:]]{4}";

Podejście to zapewnia również dobrą opcję przeglądu niepasujących rekordów i możliwe wymyślenie dodatkowego wymaganego wzorca.


0 dla odpowiedzi nr 2

Dlaczego nie użyć przypadku, gdy wybierzesz miejsce, w którym chcesz przetestować różne wyrażenia regularne, a następnie użyj to_date, aby zwrócić datę w odpowiednim formacie.

Pozwoli to uniknąć zjednoczenia wszystkich i 2 instrukcji select.

Możesz dodać więcej „formatu” bez więcej „wyboru” w dodatkowej unii.

Chyba że like_regexpr działa tylko w klauzuli where (muszę przyznać, że nigdy nie próbowałem tej funkcji).