PostgreSQLでCURRENT_TIMESTAMPを使った日付比較の問題

sql-daily-compare
  • URLをコピーしました!

データベースの検索を行う際に、日付比較をするSQL文を書く事はよくあります。
しかし、PostgreSQLCURRENT_TIMESTAMPを使うと、タイムスタンプを含むため、日付みのデータと正しく比較できないことがあります。
これは「当日のデータが収集できない」という問題に繋がることがあります。
この記事では、その問題の原因を説明し、その解決方法を詳しく解説します。

目次

問題の原因

PostgreSQLのCURRENT_TIMESTAMPは、現在の日付と時刻を含むタイムスタンプを返します。
ただし、データベースの日付が、時刻を含まないフォーマットで保存されている場合、日付の比較で一致しなくなることがあります。

解決方法

この問題を解決するには、CURRENT_DATEを使うことを推奨します。
CURRENT_DATEは時刻を含まず、当日の日付のみを返します。
これにより、日付比較が正しく行われるようになります。

修正前のSQL

修正後のSQL

これで、日付みのデータでも正しく比較され、当日のデータを収集できるようになります。
これらの比較を従来のようにタイムスタンプを含む日時で行う必要がある場合、キャストや日付の変換を通じて試みて下さい。

まとめ

PostgreSQLでは、日付と時刻を含むタイムスタンプの比較に気を付ける必要があります。
CURRENT_TIMESTAMPの代わりにCURRENT_DATEを使うことで、日付のみの比較を正しく行えるようになり、当日のデータが収集できるようになります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次