Comment puis-je extraire la date de l'époque dans BigQuery SQL

  1. j'ai la date stockée dans Epoch Time et je veux extraire Date. J'ai essayé le code ci-dessous et j'obtiens null en tant que sortie.

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

    Ex format de l'heure(1424184621000000)

  2. encore Une question. Le code ci-dessous me donne jours correctement mais pas Jours Ouvrables, il donne tous les jours, est-il possible d'obtenir juste des jours ouvrables entre deux fois stockées dans l'Époque?

    INTEGER(((Hp.ASSIGN_TIME - Hp.ARRIVAL_TIME) / 1000000) / 86400) as Days
    
10
demandé sur Qorbani 2015-06-06 19:12:21

3 réponses

Pour convertir timestampdate vous pouvez utiliser BigQuery date/heure de fonctions:

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

pour calculer le nombre de jours entre deux dates (par exemple entre 6/1/15 et 6/20/15), vous pouvez faire ceci:

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

et enfin pour calculer les jours ouvrables, vous pouvez utiliser ce qui suit:

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)

il s'agit d'un calcul simple des jours ouvrables où le samedi et le dimanche sont considérés comme des fins de semaine et où il n'y a pas de jours fériés.

14
répondu Qorbani 2015-06-06 17:19:15

si vous utilisez le dialecte standardSQL dans BigQuery, cette fonction fait la conversion en horodatage lisible par l'homme 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

11
répondu Krishnaa 2016-11-14 10:05:13

si vous avez L'option Legacy SQL, pour répondre à la question 1, avec une colonne de temps D'époque UNIX en millisecondes, comme 1524375336000,

j'ai utilisé SELECT USEC_TO_TIMESTAMP(Hp.ASSIGN_TIME * 1000) AS the_date FROM table;

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

USEC_TO_TIMESTAMP(<expr>) Convertit un timestamp UNIX en microsecondes pour un type de données TIMESTAMP.

Exemple:

SELECT USEC_TO_TIMESTAMP(1349053323000000);

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

0
répondu Kirby 2018-04-23 16:21:48