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

@Morgan 尝试这种方式,我认为它会给你准确的结果。

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

于 2012-08-28T07:44:17.607 回答
3

像这样试试

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

它将显示最大日期...用您的话来说,日期是在月底。您可以添加“GROUPBy”以获得更好的结果

于 2012-08-28T09:34:45.333 回答
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 ))

我的表是“ProjectTimeSheet”,其中有一个名为 EndDate 的字段。此查询完全按照您想要的方式检索。

于 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 回答