дата или тип строки в bigint - PullRequest
0 голосов
/ 09 ноября 2018

Как я могу преобразовать дату как '2018-03-31' в bigint в Hive?

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

Вы можете использовать функцию unix_timestamp, которая преобразует дату или метку времени в метку времени Unix и возвращает значение bigint.

Пример запроса:

select unix_timestamp('2018-03-31', 'yyyy-MM-dd');

Выход:

+--------------------------------------+
|unix_timestamp(2018-03-31, yyyy-MM-dd)|
+--------------------------------------+
|                            1522434600|
+--------------------------------------+

Примечание. Протестировал этот код в Hive 1.2.0

.
0 голосов
/ 09 ноября 2018

Что сказал Гордон.

Если у вас есть временные метки Javascript, имейте в виду, что они представляют собой просто число миллисекунд с 1970-01-01T00:00:00.000Z в 64-битной плавающей точке. Их можно легко конвертировать в BIGINT. Если вы храните эти временные метки в типах данных DATETIME(3) или TIMESTAMP(3), используйте UNIX_TIMESTAMP(date)*1000, чтобы получить полезное значение миллисекунды BIGINT.

Если вас интересуют только даты (а не время), вы можете использовать TO_DAYS(), чтобы получить целое число дней с 0000-01-01 (по григорианскому календарю; если вы историк древности) и заботьтесь о юлианском календаре, у этого подхода есть проблемы. Если вы не знаете, о чем я говорю, вам не нужно беспокоиться.) Но INT будет достаточно для этих чисел дня; BIGINT излишне убит.

0 голосов
/ 09 ноября 2018

Вы можете сделать:

select year(date) * 10000 + month(date) * 100 + day(date)

Получает целое число, представляющее дату.

Если вам нужна метка времени Unix (секунды с 1970-01-01), тогда:

select unix_timestamp(date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...