J'ai la date stockée dans Epoch Time
et je veux en extraire Date
. J'ai essayé le code ci-dessous et j'ai null
en sortie.
date_add( (timestamp( Hp.ASSIGN_TIME)), 1970-01-01,"second" ) as Extracted_date_Epoch
Format de l'heure Ex (1424184621000000)
Une dernière question. Le code ci-dessous me donne les jours correctement mais pas les jours ouvrés, mais tous les jours, Est-il possible d’obtenir seulement les jours ouvrables entre deux fois stockés dans l’époque?
INTEGER(((Hp.ASSIGN_TIME - Hp.ARRIVAL_TIME) / 1000000) / 86400) as Days
Pour convertir timestamp
en date
, vous pouvez utiliser Fonctions date/heure de BigQuery :
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 le 01/06/15 et le 20/06/15), vous pouvez procéder comme suit:
SELECT (DATEDIFF(TIMESTAMP('2015-06-20'), TIMESTAMP('2015-06-01')) + 1)
Et enfin, pour calculer les jours ouvrables, vous pouvez utiliser les éléments suivants:
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 en jours ouvrables, en considérant le samedi et le dimanche comme des week-ends et n’impliquant aucun jour férié.
Si vous utilisez le dialecte standardSQL dans BigQuery, cette fonction effectue la conversion en horodatage lisible par l'homme TIMESTAMP_MICROS (1424184621000000) -> 2015-02-17 14:50:21 UTC. Référence: https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#timestamp-string