web-dev-qa-db-fra.com

Comment calculer la différence de date dans Hive

Je suis novice. J'ai une table d'employés avec une colonne spécifiant la date d'adhésion et je souhaite récupérer la liste des employés qui ont adhéré au cours des 3 derniers mois. Je comprends que nous pouvons obtenir la date actuelle en utilisant from_unixtime (unix_timestamp ()). Comment calculer le datiff? Existe-t-il une fonction DATEDIFF () intégrée comme dans MS SQL? s'il vous plaît des conseils!

11
Holmes
datediff(to_date(String timestamp), to_date(String timestamp))
36
Kishore

Si vous avez besoin de la différence en secondes (c'est-à-dire que vous comparez des dates avec des horodatages et non des jours entiers), vous pouvez simplement convertir deux chaînes de date ou d'horodatage au format 'AAAA-MM-JJ HH: MM: SS' (ou spécifiez votre format de date de chaîne explicitement) en utilisant unix_timestamp (), puis soustrayez-les les uns des autres pour obtenir la différence en secondes. (Et peut ensuite diviser par 60.0 pour 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. 

Plus d'informations sur ce que vous pouvez faire avec unix_timestamp () ici, y compris comment convertir des chaînes avec un format de date différent: https://cwiki.Apache.org/confluence/dive/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions

2
wardw123

oui le datiff est mis en œuvre; voir: https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+UDF

A propos, j'ai trouvé cela en cherchant sur Google "Hive datiff", c'était le premier résultat;)

1
maxymoo

Je voudrais essayer ceci en premier

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