web-dev-qa-db-fra.com

Comment convertir l'horodatage en type de données Date dans Google Bigquery

J'essaie de convertir des colonnes de type de données Timestamp en type de données Date en utilisant:

bq query -q --destination_table=NEW_DATE_TABLE --replace "SELECT DATE(CURR_DT) AS CURR_DT from TEST.DATE_TABLE"

Le nouveau tableau affiche la colonne sous la forme STRING plutôt que date. Existe-t-il un moyen de convertir l'horodatage en type de données date.

Capture d'écran demandée

6
DWPro

Si vous utilisez SQL standard , vous pouvez effectuer les opérations suivantes:

SELECT * REPLACE(EXTRACT(DATE FROM curr_dt)) AS curr_dt FROM test.date_table

Si curr_dt est un champ répété, la solution se présentera comme suit:

SELECT * REPLACE(
  ARRAY(
    SELECT EXTRACT(DATE FROM curr_dt) FROM t.curr_dt
  ) AS curr_dt)
FROM test.date_table t
7
Mosha Pasumansky

Considérez ci-dessous!
Fonctionne à la fois en SQL hérité et standard

SELECT CAST(DATE(CURR_DT) AS DATE) AS CURR_DT FROM TEST.DATE_TABLE

Ajouté au commentaire d'adresse

Essayez ci-dessous - comme je l'ai mentionné ci-dessus - cela fonctionne pour Legacy et Standard

SELECT CAST(DATE(CURR_DT) AS DATE) AS CURR_DT
FROM (SELECT CURRENT_TIMESTAMP() AS CURR_DT)  

si vous souhaitez que votre cas fonctionne avec Legacy SQL - fournissez plus de détails sur le champ CURR_DT

6
Mikhail Berlyant