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より下の部分は、切り捨てられてしまう、ということです。
しっかり理解した上で使わないと、ちょっとしたミスに繋がりそうですね。