Как рассчитать разницу по времени в Улье

Я новичок. У меня есть таблица сотрудников с столбцом с указанием даты присоединения, и я хочу получить список сотрудников, которые присоединились за последние 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

Ответ 4

Я бы попробовал этот первый

select * from employee where month(current_date)-3 = month(joining_date)