PostgreSQL date型のカラムとの比較で考えた点
PostgreSQLのdate型のカラムの値に対して、現在の日付が「同じまたは後」なのか判定が必要になりました。
SELECT now();
とすればわかりますが、日付と時刻が一緒に取得できます。
単純に
SELECT id FROM date_table WHERE data_cloum >= now();
にすると、data_cloumが'2019-05-18'でnow()が'2019-05-17 18:05:00'の場合は、data_cloumの方が大きいと判断されます。
data_cloumが'2019-05-17'でnow()が'2019-05-17 18:05:00'の場合は、now()の方が大きいと判断され、望んだ結果にはなりません。
now()をフォーマットする
now()の値に時刻部分があるために望んだ結果にならないので、
SELECT id FROM date_table WHERE data_cloum >= to_char(now(), 'yyyy-mm-dd');
として、日付のみにフォーマットすれば望んだとおりの結果が得られます。
current_dateを使う
now()は日付と時刻なので、日付だけはないのかと確認したら、current_dateがありました。
www.postgresql.jp
current_dateを使えば、
SELECT id FROM date_table WHERE data_cloum >= current_date;
となって、フォーマットも不要になり、現在日付を比較に使っているというのがわかりやすいです。