Comment obtenir current_date - 1
jour dans sparksql, identique à cur_date()-1
dans mysql.
Les fonctions arithmétiques vous permettent d'effectuer une opération arithmétique sur les colonnes contenant des dates.
Par exemple, vous pouvez calculer la différence entre deux dates, ajouter des jours à une date ou soustraire des jours à une date. Les fonctions arithmétiques de date intégrées incluent datediff
, date_add
, date_sub
, add_months
, last_day
, next_day
et months_between
.
En haut de ce dont nous avons besoin, c'est
date_sub (date du début de l'horodatage, int jours), Objet: soustrait un nombre spécifié de jours à partir d'une valeur TIMESTAMP. Le premier argument peut être une chaîne, qui est transtyper automatiquement en TIMESTAMP s'il utilise le format reconnu, tel que décrit dans Type de données TIMESTAMP. Type de retour: horodatage
et nous avons
current_timestamp () Finalité: alias de la fonction now (). Revenir type: horodatage
vous pouvez choisir
date_sub(CAST(current_timestamp() as DATE), 1)
Voir https://spark.Apache.org/docs/1.6.2/api/Java/org/Apache/spark/sql/functions.html
Vous pouvez facilement effectuer cette tâche, il existe de nombreuses méthodes liées à la date et ce que vous pouvez utiliser ici est date_sub
Exemple sur Spark-REPL:
scala> spark.sql("select date_sub(current_timestamp(), 1)").show
+----------------------------------------------+
|date_sub(CAST(current_timestamp() AS DATE), 1)|
+----------------------------------------------+
| 2016-12-12|
+----------------------------------------------+
Tu peux essayer
date_add(current_date(), -1)
Je ne sais pas l'étincelle non plus mais je l'ai trouvé sur google. Vous pouvez aussi utiliser ce link pour référence
Oui, la fonction date_sub()
est appropriée pour la question. Quoi qu'il en soit, il y a une erreur dans la réponse sélectionnée:
Type de retour: horodatage
Le type de retour doit être date
à la place, la fonction date_sub () coupe tout élément hh:mm:ss
de l'horodatage et renvoie uniquement un date
.