MySQL选择表中存在的最后一天

时间:2012-08-28 07:34:05

标签: mysql sql date select

我正在尝试从mysql获取数据,其中日期是月末 例如:

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

正如您所看到的,由于各种原因,2月份的最后一个输入仅在第23天 有没有办法让我只能选择数据库中已存在的最后一个月?

6 个答案:

答案 0 :(得分:3)

试试这个

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

它会显示最长日期...在您的文字日期是月末。您可以添加“GROUPBy”以获得更好的结果

答案 1 :(得分:2)

这是SQL Fiddle

试试这个:

SELECT MAX(date)
FROM yourTable
GROUP BY YEAR(date), MONTH(date)

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

您需要使用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`;

SQLFIDDLE DEMO

查询仅获取月份的最后日期:

SELECT MAX(`date`) AS `date`
FROM table_name
GROUP BY DATE_FORMAT(`date`, '%Y%m');

答案 4 :(得分:0)

这是我的代码在我的情况下正常工作

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

我的表是“ProjectTimeSheet”,其中有一个名为EndDate的字段。此查询将以您希望的方式检索。

答案 5 :(得分:-2)

您可以使用此查询从表格中选择上个月的日期:

select max(`Date`) from t group by DATE_FORMAT(`Date`,'%Y%m')