2014-04-24 9 views
5

Mam tabelę źródłową, która ma dat zapisanych w formacie ciąg jak poniżej:String do konwersji czasu data 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 

Następnie stworzył test1 tabeli poniżej:

mk -t xyz.test birthdate:timestamp 

Kiedy piszę kwerendy przekonwertować wszystkie daty z tabeli źródłowej do datą i zapisać go, aby go test1 daje błąd:

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 

proszę pomoc, jeśli robię coś złego

Odpowiedz

0

Czy używasz zapytania, które aktualizuje tabelę w miejscu? Czy używasz WRITE_TRUNCATE? Jeśli nie, po prostu dołączysz do tabeli z innym schematem.

+0

WRITE_TRUNCATE jest taka sama jak " Owerwrite table ", prawda? Jeśli to zrobię, to również nadpisuje schemat tabeli. Zasadniczo chcę przekonwertować ciąg daty na znacznik czasu i zapisać go w tabeli docelowej jako znacznik czasu. – user3513161

+0

można zrobić "SELECT *, FORMAT_UTC_USEC (data urodzenia) jako birthdate_str od [źródło] –

+0

Próbowałem go wcześniej, ale nadal zapisuje pole" birthdate_str "jako" STRING "wpisz docelową tabelę. Chciałem pole "birthdate_str" w tabeli docelowej jako "TIMESTAMP", więc mogę uruchomić quries przeciwko niemu – user3513161

9

Nieważne. Znalazłem to. Przeglądałem dużą część dokumentu referencyjnego kwerendy bigquery.

TIMESTAMP()
Konwersja łańcucha daty na typ danych TIMESTAMP.

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

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

więc prawidłowa kwerendy jak poniżej: SELECT TIMESTAMP (data urodzenia), jak data urodzenia od [sourcetable] Limit 10

+0

Czy masz problemy z datą urodzin, ponieważ TIMESTAMP powraca dopiero w 1970 roku? Czy nie chciałbyś użyć DATETIME zamiast (która sięga roku 1000)? – Praxiteles