SQL/BigQuery 当月の月末の日付を作る

当月の月末の日付を作る

TRANCで月初にしてからADDでMONTHを指定することで1か月を足すと翌月の月初になるのでそこから1日引けばよい

DATE_SUB(DATE_ADD(DATE_TRUNC(DATE,MONTH), INTERVAL 1 MONTH) , INTERVAL 1 DAY)
DATETIME_SUB(DATETIME_ADD(DATETIME_TRUNC( DATETIME ,MONTH), INTERVAL 1 MONTH), INTERVAL 1 DAY)
TIMESTAMP(DATE_SUB(DATE_ADD(DATE(TIMESTAMP_TRUNC( TIMESTAMP , MONTH)) , INTERVAL 1 MONTH), INTERVAL 1 DAY))

TIMESTAMPはADDでMONTHが使えないのでDATEに変換してから翌月の月初にし、さらにTIMESTAMPに変換している。タイムゾーンに注意。

1日引くSUBの代わりにADDにして-1を足すようにしても同じになる。

SQL TIPS

Posted by shinu