0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

bigqueryでInvalid timestamp: 'yyyy-mm-dd hh:mm:ss.nnnnnn +00:00'出た時の対処方法

Last updated at Posted at 2021-03-26

このエラーメッセージを結構見かけるのですが、どの行で発生しているのか?のエラー情報が記載されない為、対処方法にてこづりました。特にググっても対処方法が見つからず困ったので、メモ的に投稿しておきます。

※同じメッセージで別のエラーが出るパターンがあれば適宜追加していきたいと思います。

エラーメッセージの例と対処方法

Query error: Invalid timestamp: '2018-05-09 10:02:52.785000 +00:00' at [7:1]

ぱっと見る限り、日付系で何かダメって怒られてる。
ところまではわかるのですが、日付項目をSELECT句や、WHERE句で複数箇所利用している場合、どれだよ?
となると思います。

とりあえず、SELECT句の条件、WHERE句の条件から日付を利用している部分を1個ずつコメントして原因探った結果、

以下コードが問題でした。


DATE_DIFF( DATE(table1.target_date), DATE(table2.target_date), MONTH) >= 1 

どうやら、このtarget_dateの中身が
'2018-05-09 10:02:52.785000 +00:00'
になっていて、DATE関数で変換できませんよ。

ということだったようです。

対策として、以下のようにSUBSTR関数を使って日付項目を調整すれば問題なく処理されました。

DATE_DIFF( DATE(SUBSTR(table1.target_date, 1, 10)) , DATE(SUBSTR(table2.target_date , 1, 10)), MONTH) >= 1

ふたを開けてみればデータの型問題ということで、大した内容ではなかったのですが、この事例の問題点は、

  • 標準のデバッカーには引っかからない為、あたかも問題ないように見えた
  • その状態でSQLを流すと、エラーになる
  • エラーの発生行数がわからない

に尽きると思います。
せめてどの項目でエラーになっているのか?だけでもエラーメッセージに追加されるとありがたいところです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?