Улей Текущая функция даты
Хочу узнать текущую дату в билайне.
Я пытался использовать это:
FROM_UNIXTIME(UNIX_TIMESTAMP())
это выводит это:
16-03-21
Что я искал, чтобы получить это:
2016-03-21 09:34
Как мне это сделать? Я вижу документацию beeline здесь: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
Но это не сработало для меня.
3 ответа
Попробуй это:
Select to_date(from_unixtime(unix_timestamp())) from my table ...
Результаты за 2016-03-21
Вы можете получить его, передав ожидаемый формат в качестве параметра функции from_unixtime.
Пример:
выберите from_unixtime(unix_timestamp(),'гггг-ММ-дд ЧЧ: ММ');
Результат:
2016-03-21 16:03
Есть много функций, которые вы можете использовать в улье: взято с http://atiblog.com/date-function-hive/
1) FROM_UNIXTIME:
Эта функция преобразует количество секунд из эпохи Unix (1970-01-01 00:00:00 UTC) в строку STRING, которая представляет TIMESTAMP этого момента в текущем системном часовом поясе в формате "1970-01-01 00: 00: 00”. В следующем примере возвращается текущая дата, включая время.
hive> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());
Хорошо
2015–05–18 05:43:37 Время: 0,153 секунды, извлечено: 1 ряд (а)
2) from_utc_timestamp: - Эта функция предполагает, что строка в первом выражении является UTC, а затем преобразует эту строку во временную зону второго выражения. Эта функция и функция to_utc_timestamp выполняют преобразование часовых поясов. В следующем примере t1 является строкой.hive> SELECT from_utc_timestamp(‘1970-01-01 07:00:00’, ‘JST’);
ОК 1970–01–01 16:00:00 Время: 0,148 секунды, извлечено: 1 ряд (ы)
3) to_utc_timestamp: эта функция предполагает, что строка в первом выражении находится в часовом поясе, указанном во втором выражении, а затем преобразует значение в формат UTC. Эта функция и функция from_utc_timestamp выполняют преобразование часовых поясов.hive> SELECT to_utc_timestamp (‘1970-01-01 00:00:00’,‘America/Denver’);
ОК 1970–01–01 07:00:00 Время: 0,153 секунды, извлечено: 1 ряд (ы)
4) unix_timestamp: эта функция преобразует дату в указанный формат даты и возвращает количество секунд между указанной датой и эпохой Unix. Если это не удается, то он возвращает 0. Следующий пример возвращает значение 1237487400hive> SELECT unix_timestamp (‘2009-03-20’, ‘yyyy-MM-dd’);
ОК 1237487400 Время: 0,156 секунды, извлечено: 1 ряд (ы)
5) unix_timestamp (): эта функция возвращает количество секунд из эпохи Unix (1970-01-01 00:00:00 UTC), используя часовой пояс по умолчанию.
hive> select UNIX_TIMESTAMP(‘2000-01-01 00:00:00’);
OK 946665000 Время: 0,147 секунд, Извлечено: 1 ряд (ы)
6) unix_timestamp (строка даты): эта функция преобразует дату в формате 'гггг-мм-дд чч: мм: сс' в метку времени Unix. Это вернет количество секунд между указанной датой и эпохой Unix. Если это не удается, то он возвращает 0.hive> select UNIX_TIMESTAMP(‘2000-01-01 10:20:30’,‘yyyy-MM-dd’);
OK 946665000 Время: 0,148 секунд, извлечено: 1 ряд (ы)
7) unix_timestamp (строковая дата, строковый шаблон): эта функция преобразует дату в указанный формат даты и возвращает количество секунд между указанной датой и эпохой Unix. Если это не удается, то он возвращает 0.hive> select FROM_UNIXTIME( UNIX_TIMESTAMP() );
8) from_unixtime (bigint number_of_seconds [, формат строки]): функция FROM_UNIX преобразует указанное количество секунд из эпохи Unix и возвращает дату в формате "гггг-мм-дд чч: мм: сс".
hive> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());
9) To_Date (строка времени):
hive> select TO_DATE(‘2000-01-01 10:20:30’);
ОК 2000–01–01
10) WEEKOFYEAR (строковая дата) Функция WEEKOFYEAR возвращает номер недели даты.hive> SELECT WEEKOFYEAR(‘2000-03-01 10:20:30’);
ОК 9
11) DATEDIFF (строка date1, строка date2) Функция DATEDIFF возвращает количество дней между двумя указанными датами.hive> SELECT DATEDIFF(‘2000-03-01’, ‘2000-01-10’);
ОК 51 Время занято: 0,156 секунды, Извлечено: 1 ряд (ы)
12) DATE_ADD (строковая дата, int days) Функция DATE_ADD добавляет количество дней к указанной датеhive> SELECT DATE_ADD(‘2000-03-01’, 5);
ОК 2000–03–06
13) DATE_SUB (строковая дата, int days) Функция DATE_SUB вычитает количество дней до указанной датыhive> SELECT DATE_SUB(‘2000-03-01’, 5);
OK
2000–02–25
14) КОНВЕРЦИИ ДАТЫ: Преобразование формата MMddyyyy в Unix time
Примечание: M должен быть прописной Каждый раз в формате MMddyyyy
select cast(substring(from_unixtime(unix_timestamp(dt, ‘MMddyyyy’)),1,10) as date) from sample;