2015-06-06 9 views
8
  1. ho data memorizzata nel Epoch Time e voglio estrarre Date da esso. Ho provato il codice qui sotto e ottengo null come output.Come posso estrarre la data di volta in epoca BigQuery SQL

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

    Ex formato ora (1424184621000000)

  2. più Una domanda. Il codice qui sotto mi dà giorni correttamente, ma non giorni lavorativi, dà tutti i giorni, è possibile ottenere solo giorni lavorativi tra due volte memorizzati in epoca Epoch?

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

risposta

13

Per convertire timestamp-date è possibile utilizzare BigQuery date/time functions:

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 

Per calcolare il numero di giorni tra due date (ad esempio tra 6/1/15 al 6/20/15), si può fare questo:

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

E infine per calcolare giorni lavorativi, è possibile utilizzare f opo:

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) 

Questo è semplice calcolo giorni lavorativi a considerare sabato e domenica come fine settimana e non prevedono alcun vacanze.

+0

Grazie mille Qorbani. Brillante. Stavo lottando con i giorni lavorativi per gli ultimi giorni. Funziona come una magia. –

+0

Qorbani mi piacerebbe contrassegnarlo come risposta. Non so come, tutto quello che vedo è Rispondi alla tua domanda. Non vedo le opzioni per votare o come piace o contrassegnarlo come risposta. Come lo posso fare? –

Problemi correlati