Hive - nie można porównać dwie kolumny dat w tej samej tabeli

głosy
0

Próbuję porównać dwie kolumny ciągów, które ma wartość daty w nim.

Poniżej znajduje się przykład zestawu danych

id start_dt   end_dt
1  2019-10-10 2019-10-10
2  2019-10-20 2020-01-01
3  2019-01-01 2020-01-01

Chcę wyeliminować zapisy gdzie start_dt i end_dt są równe. Próbowałem wszystkich poniżej nierówności

select * z testów gdzie TO_DATE (start_dt) <> TO_DATE (end_dt) wybiera * z testów gdzie TO_DATE (from_unixtime (from_unixtimestamp (start_dt 'rrrr mm, dd'))) <> TO_DATE (from_unixtime (from_unixtimestamp (end_dt rrrr -mm-dD ')))

Ale żaden z nich nie pracował dla nierówności gdzie samo będzie działać na rzecz równości.

Oczekiwany wynik

id start_dt   end_dt
2  2019-10-20 2020-01-01
3  2019-01-01 2020-01-01

Każda pomoc będzie bardzo mile widziane

Utwórz 13/02/2020 o 21:59
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

Jak masz typu string dla start_dt, end_dtkolumn i możemy bezpośrednio rzutować na date type(yyyy-MM-dd)i dostać tylko non pasujące wiersze!

Spróbuj tego zapytania:

select * from test where date(start_dt) <> date(end_dt);

Jesteśmy po prostu do odlewania date typei porównując w klauzuli WHERE.

Odpowiedział 13/02/2020 o 22:22
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more