Contents
例えば、
テーブルのカラムにて、型がTIMESTAMP
でデフォルトをCURRENT_TIMESTAMP
にしている場合
サーバーサイドからinsert, update処理する際は yyyy-mm-dd hh24:mi:ss
形式に変換しているが、
手動でinsertする際にデフォルトに任せてミリ秒まで入れてしまい、形式の統一ができてないことが発生した。
形式の統一ができていないと、サーバーサイド内で処理する際にミリ秒が考慮されておらず、想定した処理をしてくれない事象が発生した。
よって、デフォルトでミリ秒切り捨てをするようにしてみた。
select文でのミリ秒切り捨て
通常
select created_at from hoge;
created_at
----------------------------
2019-10-15 09:10:58.563309
timestamp(0)
select created_at::timestamp(0) from hoge;
created_at
---------------------
2019-10-15 09:10:58
date_trunc(‘second’)
select date_trunc('second', created_at) from hoge;
created_at
---------------------
2019-10-15 09:10:58
デフォルトでの設定
カラム追加時
ALTER TABLE hoge ADD COLUMN created_at SET CURRENT_TIMESTAMP::timestamp(0);
既存カラムへの指定
ALTER TABLE hoge ALTER COLUMN created_at SET DEFAULT CURRENT_TIMESTAMP::timestamp(0);
有効期限などを扱うカラムで +1 hour
等にしたい場合
ALTER TABLE hoge ADD COLUMN expired_at SET DATE_TRUNC('second', CURRENT_TIMESTAMP+'1 hour');