PostgreSQLのTIMESTAMP型で値を入れた日時データについて、小数点以下の秒数を「切り捨て」して取得する方法を紹介する。

まずは結論から。
以下のとおり、date_trunc関数を使うことで小数点以下を「切り捨て」して取得することができる。

SELECT date_trunc('second', cast(order_date as timestamp)) FROM tbl_order;

date_trunc関数は第一引数に指定した単位で切り捨てた値を返す関数で、例えば以下のように「時(hour)」を指定すると「分」以下が切り捨てられた値を返す。

-- order_dateが 2022-06-09 12:50:00 の場合
-- 「2022-06-09 12:00:00」が返される
SELECT date_trunc('hour', cast(order_date as timestamp)) FROM tbl_order;

この件、仕事で散々調べたところ以下のSQLも多く取り上げられていたが、これでは小数点以下が「四捨五入」されてしまう。

SELECT order_date::timestamp(0) FROM tbl_order;