いろいろやってみよう

完璧を目指すより、まず終わらせろ

TIMESTAMP_DIFF のちょっとしたメモ

BigQueryで、TIMESTAMP型同士の差分を計算することがあります。

その時はTIMESTAMP_DIFF関数を使っています。記述方法は下記の通り。

TIMESTAMP_DIFF(timestamp_expression, timestamp_expression, date_part)

参考サイト


これなんですが、date_partに指定する値によって、計算結果の丸め方がちょっと代わります。

例えば、HOUR(時間)を指定した場合。

SELECT
  TIMESTAMP_DIFF(TIMESTAMP "2018-10-01 11:59:59 UTC", TIMESTAMP "2018-10-01 10:00:00 UTC", HOUR) AS hours;

実際の差分は1時間59分59秒ですが、計算結果は「1」になります。

次に、MINUTE(分)を指定した場合。

SELECT
  TIMESTAMP_DIFF(TIMESTAMP "2018-10-01 11:59:59 UTC", TIMESTAMP "2018-10-01 10:00:00 UTC", MINUTE) AS minutes;

結果は「119」になります。

つまり、指定したdate_partより下の部分は、切り捨てられてしまう、ということです。

しっかり理解した上で使わないと、ちょっとしたミスに繋がりそうですね。