webentwicklung-frage-antwort-db.com.de

Wie kommt man heute - Datum "1 Tag" in sparksql?

Wie bekomme ich current_date - 1 day in sparksql, genau wie cur_date()-1 in mysql.

11
Vishan Rana

Mit den Rechenfunktionen können Sie arithmetische Operationen für Spalten ausführen, die Datumsangaben enthalten. 

Sie können beispielsweise die Differenz zwischen zwei Datumsangaben berechnen, einem Datum Tage hinzufügen oder Tage von einem Datum abziehen. Die integrierten Datumsberechnungsfunktionen umfassen datediff, date_add, date_sub, add_months, last_day, next_day und months_between.

Was wir brauchen, ist von oben 

date_sub (Startdatum des Zeitstempels, int Tage), Zweck: Subtrahiert eine angegebene Anzahl von Tagen von einem TIMESTAMP-Wert. Das erste Argument kann eine Zeichenfolge sein. Dies ist wird automatisch in TIMESTAMP umgewandelt, wenn das erkannte Format als .__ verwendet wird. beschrieben in TIMESTAMP-Datentyp. Rückgabetyp: Zeitstempel

und wir haben 

current_timestamp () Zweck: Alias ​​für die now () - Funktion. Rückkehr Typ: Zeitstempel

sie können auswählen 

date_sub(CAST(current_timestamp() as DATE), 1)

Siehe https://spark.Apache.org/docs/1.6.2/api/Java/org/Apache/spark/sql/functions.html

11
Ram Ghadiyaram

Sie können diese Aufgabe leicht ausführen, es gibt viele Methoden, die sich auf das Datum beziehen, und hier können Sie date_sub verwenden.

Beispiel für 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

Du kannst es versuchen

date_add(current_date(), -1)

Ich weiß es auch nicht, aber ich habe es bei Google gefunden. Sie können dieses link auch als Referenz verwenden

4
TAYFUN CANAKCI

Ja, die Funktion date_sub() ist das richtige für die Frage. In der ausgewählten Antwort ist jedoch ein Fehler aufgetreten:

Rückgabetyp: Zeitstempel

Der Rückgabetyp sollte date sein. Die Funktion date_sub () schneidet jeden hh:mm:ss-Teil des Zeitstempels ab und gibt nur eine date zurück.

0
Kai