web-dev-qa-db-fra.com

Comment arriver aujourd'hui - date "1 jour" en sparksql?

Comment obtenir current_date - 1 jour dans sparksql, identique à cur_date()-1 dans mysql.

11
Vishan Rana

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

11
Ram Ghadiyaram

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|
+----------------------------------------------+
4
Shiv4nsh

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

4
TAYFUN CANAKCI

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.

0
Kai