BigQueryの管理コンソールでDATETIME型の検索結果のミリ秒以下が省略される表示について調べた

2023.03.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部の鈴木です。

BigQueryの管理コンソールでDATETIME型のデータを見ていたときにふとミリ秒以下が表示されないデータがあることに気づき、どのような表示の挙動になっていそうか確認してみました。

結果的には、ミリ秒以下が全て0の場合は、表示が省略されることが分かりました。些細なことではありますが、ミリ秒が記載されていない日時の文字列からDATETIME型にキャストしたときに、「これって表示されなくていいんだっけ?」とかなり気になったので、確認したことをブログにしました。

BigQueryのDATETIME型について

以下のドキュメントにDATETIME型の記載があります。

記事執筆時点では、0001-01-01 00:00:00~9999-12-31 23:59:59.999999の範囲でデータを持てることが記載されており、型の仕様としてミリ秒以下の値をあらわに表示しないことがあることが分かりました。

ミリ秒以下がどんなときに表示されないのか試してみた

実際にコンソールから試してみました。

ミリ秒以下が省略されるとき

ミリ秒以下が000000と同等のときは表示が省略されるようでした。

SELECT CAST('2023-03-19 13:00:00'AS DATETIME)

省略されるとき1

SELECT CAST('2023-03-19 13:00:00.000'AS DATETIME)

省略されるとき2

SELECT CAST('2023-03-19 13:00:00.000000'AS DATETIME)

省略されるとき3

ミリ秒以下が省略されないとき

ミリ秒以下が000000以外のときは表示が省略されませんでした。

SELECT CAST('2023-03-19 13:00:00.001'AS DATETIME)

省略されないとき1

SELECT CAST('2023-03-19 13:00:00.000001'AS DATETIME)

省略されないとき2

という訳で、ミリ秒以下に0以外の値が入るような場合は、コンソール上では表示が省略されることが分かりました。

bqツールから検索したときの挙動

bqツールの検索結果だとミリ秒以下は表示されるかなと思い確認してみましたが、こちらも省略されました。

bq query --use_legacy_sql=false "SELECT CAST('2023-03-19 13:00:00.000000'AS DATETIME)"

検索結果

設定で変更できないか

クエリエディタの設定やbqツールのオプションで変更できないかと思いましたが、記事執筆時点ではDATETIME型のデータの表示設定のような機能はなさそうでした。今後追加されたり、もしここからできるよというものがあればコメント頂けると幸いです。

コンソールからの操作の仕様については以下のドキュメントが一番詳しそうでした。

bqツールのリファレンスは以下になります。

最後に

今回は、BigQueryのコンソールでDATETIME型のデータのミリ秒以下の表示について、どのようなときに表示が省略されるのか確認してみました。

初めてみたときになにかデータの格納方法を間違えてミリ秒以下が落ちてしまったり、型を間違えたかなと結構びっくりしたのですが、ただ単に表示が省略されていることが分かったので安心しました。

どこかで誰かのお役に立てば嬉しいです。