Я новичок. У меня есть таблица сотрудников с столбцом с указанием даты присоединения, и я хочу получить список сотрудников, которые присоединились за последние 3 месяца. Я понимаю, что мы можем получить текущую дату, используя from_unixtime (unix_timestamp()). Как рассчитать датифф? Есть ли встроенная функция DATEDIFF(), например, в MS SQL? пожалуйста, совет!
Как рассчитать разницу по времени в Улье
Ответ 1
datediff(to_date(String timestamp), to_date(String timestamp))
Например:
SELECT datediff(to_date('2019-08-03'), to_date('2019-08-01')) <= 2;
Ответ 2
Если вам нужна разница в секундах (например: вы сравниваете даты с отметками времени, а не целыми днями), вы можете просто преобразовать две строки даты или времени в формате "YYYY-MM-DD HH: MM: SS '(или явно укажите формат строковой даты) с помощью unix_timestamp(), а затем вычитайте их друг от друга, чтобы получить разницу в секундах. (И затем можно разделить на 60,0, чтобы получить минуты, или на 3600,0, чтобы получить часы и т.д.)
Пример:
UNIX_TIMESTAMP('2017-12-05 10:01:30') - UNIX_TIMESTAMP('2017-12-05 10:00:00') AS time_diff -- This will return 90 (seconds). Unix_timestamp converts string dates into BIGINTs.
Подробнее о том, что вы можете сделать с помощью unix_timestamp() здесь, в том числе, как преобразовать строки с различным форматированием даты: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions
Ответ 3
да датированный; видеть: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
Кстати, я нашел это в Google-поиске "hive fariff", это был первый результат;)
Ответ 4
Я бы попробовал этот первый
select * from employee where month(current_date)-3 = month(joining_date)