2014-04-24 15 views
5

Ho una tabella di origine che ha date memorizzati in formato stringa come di seguito:String alla conversione di data e ora BigQuery

1984-10-28 00:00:00 
1988-11-22 00:00:00 
1990-01-08 00:00:00 
1983-06-22 00:00:00 

Poi creato una tabella test1 come qui sotto:

mk -t xyz.test birthdate:timestamp 

Quando scrivo un interrogare per convertire tutte le date da tabella di origine al timestamp e salvarlo in tEST1 dà un errore:

SELECT FORMAT_UTC_USEC(birthdate) AS birthdate FROM [sourcetable] LIMIT 10 

Error: Invalid schema update. Field birthdate has changed type 
Job ID: [Project]:job_5P4gFVl4wiYuyXL0vY5VZNtCZOU 

prega aiuto se sto facendo qualcosa di sbagliato

risposta

0

Stai eseguendo una query che aggiorna una tabella sul posto? Stai usando WRITE_TRUNCATE? Altrimenti, finirai per accodarti alla tabella con uno schema diverso.

+0

WRITE_TRUNCATE è lo stesso come " Tabella Owerwrite ", giusto? Se lo faccio, sovrascrive anche lo schema della tabella. Fondamentalmente voglio convertire la data string in timestamp e salvarla nella tabella Destination come timestamp – user3513161

+0

potresti fare 'SELECT *, FORMAT_UTC_USEC (birthdate) come birthdate_str FROM [sourcetable] –

+0

L'ho provato in precedenza ma salva ancora il campo" birthdate_str "come" STRING "digita nella tabella di destinazione. Volevo il campo "birthdate_str" nella tabella di destinazione come "TIMESTAMP" in modo da poter eseguire i problemi contro di esso – user3513161

9

Non importa. L'ho trovato. Stavo trascurando gran parte del documento di riferimento delle query di bigquery.

TIMESTAMP()
Convertire una stringa di data in un tipo di dati TIMESTAMP.

SELECT TIMESTAMP ("2012-10-01 01:02:03");

Returns: 2012-10-01 01:02:03 UTC

Quindi la domanda corretta, come di seguito: SELEZIONA TIMESTAMP (data di nascita) AS data di nascita FROM [sourcetable] LIMIT 10

+0

Hai problemi con la data di nascita dato che TIMESTAMP risale solo al 1970? Non vorresti usare DATETIME invece (che risale all'anno 1000)? – Praxiteles