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
.
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
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