wake-up-neo.com

Wie kann ich ein Datum aus der Epoche in BigQuery SQL extrahieren?

  1. Ich habe ein Datum in Epoch Time gespeichert und möchte die Date daraus extrahieren. Ich habe den folgenden Code ausprobiert und erhalte als Ausgabe null.

    date_add( (timestamp( Hp.ASSIGN_TIME)), 1970-01-01,"second" ) as Extracted_date_Epoch
    

    Ex-Zeitformat (1424184621000000)

  2. Noch eine Frage. Der folgende Code gibt mir Tage richtig, aber keine Werktage, es gibt alle Tage. Ist es möglich, nur Werktage zwischen zwei Zeiten in der Epoche Zeit zu erhalten?

    INTEGER(((Hp.ASSIGN_TIME - Hp.ARRIVAL_TIME) / 1000000) / 86400) as Days
    
12
Zia J

Um timestamp in date umzuwandeln, können Sie BigQuery-Datums Zeitfunktionen verwenden - /:

SELECT TIMESTAMP(1424184621000000)       # 2015-02-17 14:50:21 UTC  
SELECT DATE(TIMESTAMP(1424184621000000)) # 2015-02-17   
SELECT DATE(TIMESTAMP('2015-02-17'))     # 2015-02-17   
SELECT INTEGER(TIMESTAMP('2015-02-17'))  # 1424131200000000

So berechnen Sie die Anzahl der Tage zwischen zwei Datumsangaben (z. B. zwischen dem 01.06.15 und dem 20.06.15):

SELECT (DATEDIFF(TIMESTAMP('2015-06-20'), TIMESTAMP('2015-06-01')) + 1)

Und um Arbeitstage zu berechnen, können Sie Folgendes verwenden:

SELECT
   (DATEDIFF(TIMESTAMP('2015-06-20'), TIMESTAMP('2015-06-01')) + 1)
  -(INTEGER((DATEDIFF(TIMESTAMP('2015-06-20'), TIMESTAMP('2015-06-01')) + 1) / 7) * 2)
  -(CASE WHEN DAYOFWEEK(TIMESTAMP('2015-06-01')) = 1 THEN 1 ELSE 0 END)
  -(CASE WHEN DAYOFWEEK(TIMESTAMP('2015-06-20')) = 7 THEN 1 ELSE 0 END)

Dies ist eine einfache Berechnung für Werktage, bei der Sa und So als Wochenenden betrachtet werden und keine Feiertage erforderlich sind.

18
Qorbani

Wenn Sie StandardSQL-Dialekt in BigQuery verwenden, führt diese Funktion die Konvertierung in einen vom Menschen lesbaren Zeitstempel durch TIMESTAMP_MICROS (1424184621000000) -> 2015-02-17 14:50:21 UTC. Ref: https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#timestamp-string

15
Krishnaa

Wenn Sie über die Option "Legacy SQL" verfügen, um Frage 1 zu beantworten, geben Sie eine Spalte mit der UNIX-Epochenzeit in Millisekunden an, z. B. 1524375336000.

Ich habe SELECT USEC_TO_TIMESTAMP(Hp.ASSIGN_TIME * 1000) AS the_date FROM table; verwendet

╔═══╦═══════════════╦═════════════════════════════╗
║   ║ ASSIGN_TIME   ║ the_date                    ║
╠═══╬═══════════════╬═════════════════════════════╣
║ 1 ║ 1524375336000 ║ 2018-04-22 05:35:36.000 UTC ║
╚═══╩═══════════════╩═════════════════════════════╝

USEC_TO_TIMESTAMP(<expr>) Konvertiert einen UNIX-Zeitstempel in Mikrosekunden in einen TIMESTAMP-Datentyp.

Beispiel :

SELECT USEC_TO_TIMESTAMP(1349053323000000);

https://cloud.google.com/bigquery/docs/reference/legacy-sql#usec_to_timestamp

0
Kirby