获得每个月的第一个日期&年份和相应的价值

时间:2014-09-14 11:05:50

标签: mysql grouping

我有一个包含以下列和数据的表记录 -

Date        |   Value

01-01-2008      3040

02-01-2008      3940

03-01-2008      4240

01-03-2008      5340

01-04-2008      5540

01-05-2008      4340

04-09-2009      7800

'

'

31-12-2013      4350

日期范围为2008年1月1日至2013年12月31日,相应的值为。

是否有任何我可以写的mysql语句可以让我获得年月的第一个日期和相应的值。

之类的东西 -

 01-01-2008 3040
 01-02-2008 corresponding value
 01-03-2008 corresponding value

每年的每个月。

3 个答案:

答案 0 :(得分:0)

我不确定是否有基于日期的答案 我的意思是将Date作为DataType处理,但是如果将日期转换为String 然后所有以 01 - 开头的日期(字符串)将是您需要的行。 (如果日期格式为d-m-y)

select * from mytable where DATE_FORMAT(dateField, '%d-%m-%Y') like '01-%'

答案 1 :(得分:0)

如果您想在数据库中找到每个月的第一天,可以使用day()功能

select *
from table
where  day(`Date`)  = 1

根据您的格式,我怀疑您已将日期存储为varchar字段中的字符串,那么您可能需要str_to_date()将其转换为实际日期对象

select *
from table
where  day(str_to_date(`Date`,'%d-%m-%Y'))  = 1

Sample demo

根据评论进行修改

如果您想查找每月最小日期,年份组,您可以使用日期值并按月和年分组来使用自我加入

select *
from test t
join (
     select min(`Date`) `Date`
      from test 
     group by month(`Date`),
              year( `Date`)
    ) t1
on(t.`Date` = t1.`Date`)

Sample Demo 2 我更新了一些数据,以便更好地分析

答案 2 :(得分:0)

你可以试试这个:

 SELECT t.date , t.value FROM table t WHERE DAYOFMONTH(date)=1;