日付が月末の mysql からデータを取得しようとしています。
例:
id date name
===================
1 2002-02-23 aaaa
2 2002-02-23 bbbb
3 2002-03-01 cccc
ご覧のとおり、2 月の最後の入力は、さまざまな理由により 23 日のみです。データベースに存在
する
月の最後の日付のみを選択できるようにする方法はありますか?
このようにしてみてください
SELECT * FROM my_table WHERE date in (select max(date) from my_table)
最大の日付が表示されます...つまり、日付は月末です。より良い結果を得るには、「GROUPBy」を追加できます
@Morganはこの方法を試してください。正確な結果が得られると思います。
SELECT * FROM table
WHERE date in
(select DISTINCT max(date) from table
GROUP BY MONTH(date ))
次のようにレコードをグループ化してself join
、テーブルを使用する必要があります。derived table
year-month
SELECT a.*
FROM table_name a
INNER JOIN (
SELECT MAX(`date`) AS `date`
FROM table_name
GROUP BY DATE_FORMAT(`date`, '%Y%m')
) b
ON a.`date` = b.`date`;
月の最後の日付のみを取得するクエリ:
SELECT MAX(`date`) AS `date`
FROM table_name
GROUP BY DATE_FORMAT(`date`, '%Y%m');
これが私の場合にうまく動作する私のコードです
SELECT * FROM ProjectTimeSheet WHERE EndDate in (select DISTINCT max(EndDate) from
ProjectTimeSheet GROUP BY MONTH(EndDate ))
私のテーブルは、EndDateという名前のフィールドを持つ「ProjectTimeSheet」です。そして、このクエリはまさにあなたが望む方法で取得します。
次のクエリを使用して、テーブルから先月の日付を選択できます。
select max(`Date`) from t group by DATE_FORMAT(`Date`,'%Y%m')