日付型についてちょっと苦手意識があったので、一旦整理をしようと思います。
なんか今までも日付型のイメージがついてなく、
DATE型はYYYYMMDDで、どういう値の形式なら入るのか?
TIME型はHH:MM:SSで、こっちもどういう値の形式なのか?
など整理せず、いつもエラーになってあーーってなっていたくらい、苦手意識があります。
そのため一回整理したいなと思います。
BigQueryとMySQLの日付型の違い
BigQueryとMySQLの日付型について、ちょっとまとめてみました。
結構同じというかほとんど同じで、
● BigQuery
日付型 | 値の形式 |
---|---|
DATE型 | 0001-01-01~9999-12-31 YYYY-MM-DDの形でないとだめ。YYYY/MM/DDはダメで、YYYY-MM-DDでハイフンでないとだめ。 |
TIME型 | HH:MM:SS (00:00:00~23:59:59.99999) |
DATETIME型 | DATE型+TIME型なので、日付と時間。つまりは、YYYY-MM-DD HH:MM:SS |
TIMESTAMP型 | 0001-01-01 0000:00:00 UTC ~ 9999-12-31 23:59:59.999999 UTC |
※ TIMESTAMPタイムスタンプとは、時刻印という意味の英単語で、文書に押印された日時のこと。ITの分野では、ファイルやデータの属性の一つとして付与・保管される日時情報をこのように呼ぶ。
参照:IT用語辞典 e-words
→ つまりはTIMESTAMPってテーブルに書き込まれた時間という意味かな。ならばcreated_atとかがまさにそれなのかも(select CURRENT_TIMESTAMP() as created_at)
※ よくある日付の値として「YYYY/MM/DD」があるが、これはBigQueryのDATE型に入れようとするとエラーになる。
値の形式は「YYYY-MM-DD」なので、DATE型に入れる場合は、ハイフンで表記するようにする必要がある。
● MySQL
日付型 | |
---|---|
DATE型 | YYYY-MM-DD |
TIME型 | HH:MM:SS |
DATETIME型 | YYYY-MM-DD HH:MM:SS |
TIMESTAMP型 |
csvデータ取り込みはUTF-8でないといけない
さまざまなBQについては以下で解説してますので、ぜひ!
● スケジュールクエリ 続きを見る
【GCP】BigQueryのスケジュールクエリの使い方
● BigQuery ML Engine 続きを見る
【GCP】BigQueryのBQML
● パーティション 続きを見る
【GCP】BigQueryのシャーディング
● ユーザー定義関数や定数 続きを見る
【GCP】BigQueryの定数やユーザー定義関数(UDF)