データベースにクエリを実行して特定の日付範囲内のレコードを取得する場合、多くの場合、前月の最終日を含める必要があります。前の月。この範囲は、現在の日付に応じて毎月変わります。
関数を使用せずに前月の末日を決定するには、次のクエリを使用できます。日付列:
SELECT * FROM tbl WHERE my_date BETWEEN date_trunc('month', now())::date - 1 AND now()::date
date_trunc('month', now()) 関数は、現在の月の最初の日を返します。減算演算子を使用してこの結果から 1 日を減算すると、前月の最終日が得られます。
タイムスタンプ列の場合、クエリは少し異なります。
SELECT * FROM tbl WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day' AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
date_trunc ('month', now()) 関数は、現在の月の始まりをタイムスタンプとして返します。前月の最終日を取得するには、-interval '1 day' 式を使用して 1 日を減算します。
2 番目の条件では、date_trunc('day' , now() に 1 日を追加します。 ) 範囲に「今日」がすべて含まれるようにするために、間隔「1 日」を使用した結果。
関数を使用する場合は、 LAST_DAY() 関数を使用して同じ結果を得ることができます。
SELECT * FROM tbl WHERE my_date BETWEEN LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)) AND NOW()
この関数は、現在の日付に基づいて前月の最終日を明示的に計算します。
以上がPostgreSQLで前月の最終日を取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。