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!

10
demandé sur Holmes 2015-05-29 08:21:31

4 réponses

datediff(to_date(String timestamp), to_date(String timestamp))
33
répondu Kishore 2015-05-29 15:46:39

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

2
répondu wardw123 2017-12-06 21:04:32

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 ;)

1
répondu maxymoo 2015-05-29 05:30:11

je voudrais essayer cette première

select * from employee where month(current_date)-3 = month(joining_date)
0
répondu Sambit Tripathy 2015-05-29 06:46:10