PostgreSQL
概要 [#s03d204e]
SQLで月初と月末の日付を取得したい場合に使用できます。
date_trunc関数で年、月、日の切り捨てが可能です。
SQL [#q4ccc3ec]
月初の取得 [#p29afc28]
select date_current('month',now());
月末の取得 [#o62e1a90]
select date_current('month',now()) interval + '1 month' interval - '1 days';
今月の1日を取得→1ヶ月先を取得→1日前を取得=今月の月末を取得
月初から月末までの範囲の取得 [#x59ff8ce]
tableがpayment_tbl 月日データがtimestamp型で保存されているテーブルがp_dateだった場合
select * from payment_tbl where p_date between date_trunc('month',now()) and date_trunc('month',now()) + interval '1 month' - interval '1 days';
応用 [#aa825cb0]
範囲取得 [#j054bac9]
先月のデータ [#ye359cb4]
select p_date,category_tbl.c_name,p_price from payment_tbl,category_tbl where payment_tbl.c_id=category_tbl.c_id and p_date between date_trunc('month',now()) - interval '1 month' and date_trunc('month',now()) - interval '1 days' order by p_date desc;
betweenで本日から1ヶ月前の1日から今月の月初1日の1日前の範囲を取得。
今月のデータ [#z67b048f]
select p_date,category_tbl.c_name,p_price from payment_tbl,category_tbl where payment_tbl.c_id=category_tbl.c_id and p_date between date_trunc('month',now()) and date_trunc('month',now()) + interval '1 month' - interval '1 days' order by p_date desc;
betweenで今月の1日から来月1日の1日前の範囲を取得。※今月の1日から月末までの範囲を取得。