Unix Timestamp в Hive дает такие же результаты - PullRequest
0 голосов
/ 13 марта 2019

Я использую Hive 1.2.1000. Я на самом деле имею дело с преобразованием в Unix Timestamp Я пытаюсь конвертировать дату в формате:

дд / мм / гггг чч: мм: сс

в unix_timestamp, следовательно:

unix_timestamp (дата, "дд-мм-гггг чч: мм: сс")

были использованы.

Точнее, я запустил следующий код:

выберите '09 / 06/2012 04:02:32 ', regexp_replace ('09 / 06/2012 04:02:32', "/", "-")

, который, кажется, работает, на самом деле результат: 1326081752

Я также заметил, что у меня есть N отличных дат, и различное на unix_timestamp этих дат составляет M с M .

Делая некоторые манипуляции с данными, я видел, что есть разные даты с одинаковым unix_timestamp.

Поэтому я попытался пойти глубже и нашел много дат, например

09/06/2012 04:02:32

и

09/12/2012 04:02:32

Теперь, если я попытаюсь запустить следующий код:

select 
'09/06/2012 04:02:32', 
regexp_replace('09/06/2012 04:02:32',"/","-"),
unix_timestamp(regexp_replace('09/06/2012 04:02:32',"/","-"),"dd-mm-yyyy hh:mm:ss"), 
unix_timestamp('09-06-2012 04:02:32',"dd-mm-yyyy hh:mm:ss")
UNION ALL
select '09/12/2012 04:02:32', 
regexp_replace('09/12/2012 04:02:32',"/","-"), 
unix_timestamp(regexp_replace('09/12/2012 04:02:32',"/","-"),"dd-mm-yyyy hh:mm:ss"), 
unix_timestamp('09-12-2012 04:02:32',"dd-mm-yyyy hh:mm:ss")

Это вывод:

09/06/2012 04:02:32 09-06-2012 04:02:32 1326081752  1326081752  1326081752
09/12/2012 04:02:32 09-12-2012 04:02:32 1326081752  1326081752  1326081752

Что одно и то же.

Этот результат может быть распространен на все даты, в которых все идентично, кроме одного между dd и мм .

Не могли бы вы объяснить, почему?

Заранее спасибо, Manuel

Ps. Я также пробовал с датами в другом формате, например:

select '2012-06-09 04:02:32', unix_timestamp(regexp_replace('2012-06-09 04:02:32',"/","-"),"yyyy-mm-dd hh:mm:ss")
UNION ALL
select '2012-12-09 04:02:32', unix_timestamp(regexp_replace('2012-12-09 04:02:32',"/","-"),"yyyy-mm-dd hh:mm:ss")

Но результат тот же.

1 Ответ

1 голос
/ 13 марта 2019

Проблема заключалась в том, что мм обозначает минуты.

дд- ММ -гггг чч: мм: сс

вместо

дд- мм -гггг чч: мм: сс

было решением проблемы.

...