3

日付が月末の mysql からデータを取得しようとしています。
例:

id date       name
===================
1  2002-02-23 aaaa
2  2002-02-23 bbbb
3  2002-03-01 cccc

ご覧のとおり、2 月の最後の入力は、さまざまな理由により 23 日のみです。データベースに存在
する 月の最後の日付のみを選択できるようにする方法はありますか?

4

6 に答える 6

3

このようにしてみてください

SELECT * FROM my_table WHERE date in (select max(date) from my_table)

最大の日付が表示されます...つまり、日付は月末です。より良い結果を得るには、「GROUPBy」を追加できます

于 2012-08-28T09:34:45.333 に答える
3

@Morganはこの方法を試してください。正確な結果が得られると思います。

SELECT * FROM table WHERE date in (select DISTINCT max(date) from table GROUP BY MONTH(date ))

于 2012-08-28T07:44:17.607 に答える
2

ここにSQLフィドルがあります

これを試して:

SELECT MAX(date)
FROM yourTable
GROUP BY YEAR(date), MONTH(date)
于 2012-08-28T07:41:44.920 に答える
0

次のようにレコードをグループ化してself join、テーブルを使用する必要があります。derived tableyear-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`;

SQLFIDDLE デモ

月の最後の日付のみを取得するクエリ:

SELECT MAX(`date`) AS `date`
FROM table_name
GROUP BY DATE_FORMAT(`date`, '%Y%m');
于 2012-08-28T07:38:22.203 に答える
0

これが私の場合にうまく動作する私のコードです

SELECT * FROM ProjectTimeSheet WHERE EndDate in (select DISTINCT max(EndDate) from 
ProjectTimeSheet GROUP BY MONTH(EndDate ))

私のテーブルは、EndDateという名前のフィールドを持つ「ProjectTimeSheet」です。そして、このクエリはまさにあなたが望む方法で取得します。

于 2013-10-09T08:50:36.957 に答える
-2

次のクエリを使用して、テーブルから先月の日付を選択できます。

select max(`Date`) from t group by DATE_FORMAT(`Date`,'%Y%m')
于 2012-08-28T07:49:57.513 に答える