Разбор формата даты для присоединения к улью

У меня есть поле даты типа String и в формате:

03/11/2001

И я хочу соединить его с другим столбцом, который находится в другом формате String:

1855-05-25 12:00:00.0

Как я могу эффективно объединить оба столбца в улье, игнорируя временную часть второго столбца?

Мой запрос выглядит следующим образом:

LEFT JOIN tabel1 t1 ON table2.Date=t1.Date

person Aman    schedule 02.02.2016    source источник


Ответы (2)


Поскольку у вас есть оба значения даты в разных форматах, вам нужно использовать функции даты для обоих и преобразовать их в аналогичный формат типа даты в запросе на соединение. Было бы что-то вроде этого:

LEFT JOIN tabel1 t1 ON unix_timestamp(table2.Date, 'yyyy-MM-dd HH:mm:ss.S')table2.Date=unix_timestamp(t1.Date,'MM/dd/yyyy')

Вы можете ссылаться на это и это для даты сборки улья функции.

person K S Nidhin    schedule 02.02.2016
comment
Будет ли он игнорировать временную часть? - person Aman; 02.02.2016
comment
В этом случае дата-время без времени будет считаться 00:00:00.0. - person K S Nidhin; 03.02.2016
comment
Яа.. Но я вижу, что мои присоединения занимают много времени.. Это ожидаемое поведение? - person Aman; 03.02.2016
comment
Преобразование даты запроса может занять некоторое время. . может потребоваться настройка и альтернативный подход, если у вас есть огромные данные - person K S Nidhin; 03.02.2016

преобразовать даты в тот же формат to_date(table2.date) = to_date(t1.date)

person Sesha Savarala    schedule 05.02.2016