Comment calculer la différence de Date dans la ruche
je suis un novice. J'ai une table d'employés avec une colonne spécifiant la date d'adhésion et je veux récupérer la liste des employés qui ont rejoint au cours des 3 derniers mois. Je comprends que nous pouvons obtenir la date actuelle en utilisant from_unixtime(unix_timestamp()). Comment puis-je calculer le datediff? Y a-t-il une fonction intégrée dans DATEDIFF() comme dans MS SQL? s'il vous plaît conseils!
4 réponses
datediff(to_date(String timestamp), to_date(String timestamp))
si vous avez besoin de la différence en secondes (i.e.: vous comparez des dates avec des horodateurs, et pas des jours entiers), vous pouvez simplement convertir deux chaînes de date ou de timestamp dans le format 'YYYY-MM-JJ HH:MM:SS' (ou spécifier explicitement votre format de date de chaîne) en utilisant unix_timestamp(), et puis les soustraire les uns des autres pour obtenir la différence en secondes. (Et peut ensuite diviser par 60,0 à obtenir des minutes, ou par 3600.0 pour obtenir des heures, etc.)
Exemple:
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.
en savoir Plus sur ce que vous peut faire avec unix_timestamp() ici, y compris comment convertir des chaînes avec le formatage de date différent: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions
oui datediff est mis en œuvre; voir: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
au fait, j'ai trouvé ceci par Google-recherche "de la ruche datediff", il a été le premier résultat ;)
je voudrais essayer cette première
select * from employee where month(current_date)-3 = month(joining_date)