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!
datediff(to_date(String timestamp), to_date(String timestamp))
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
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;)
Je voudrais essayer ceci en premier
select * from employee where month(current_date)-3 = month(joining_date)