Comment puis-je extraire la date de l'époque dans BigQuery SQL
j'ai la date stockée dans
Epoch Time
et je veux extraireDate
. J'ai essayé le code ci-dessous et j'obtiensnull
en tant que sortie.date_add( (timestamp( Hp.ASSIGN_TIME)), 1970-01-01,"second" ) as Extracted_date_Epoch
Ex format de l'heure(1424184621000000)
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
3 réponses
Pour convertir timestamp
date
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.
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
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