2012-08-28 53 views
3

我试图从mysql获取数据,其中日期在月底。
例子:
MySQL选择月份的最后一天存在于表

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

正如你可以看到最后输入上月仅在由于各种原因,日期23。
有没有办法让我只能在数据库中选择月份的最后一个日期存在

+1

所以如果是这样的话,根据你给定的记录是什么结果? –

回答

0

你需要year-month采取self join使用derived table表通过分组记录:

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'); 
2

这里是一个SQL Fiddle

试试这个:

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

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

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

+0

你是否得到了要求的结果? – mansoor

-2

您可以选择从表中最后一个月的日期与此查询:

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

尝试这样

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

它会表现出最大的日期...在你的单词日期为月末。您可以添加“GROUPBy”以获得更好效果

0

这里是我的代码,在我的情况下

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

在哪里我的表是“ProjectTimeSheet”,有一个名为结束日期字段工作正常。而这个查询完全按照你想要的方式进行检索。

相关问题