繁体   English   中英

获取每月和每年的第一个日期以及相应的值

[英]Get the 1st date of every month & year and the corresponding value

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

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

每年的每个月。

我不确定是否有基于日期的答案,我的意思是将Date作为Date类型处理,但是如果将日期转换为字符串,则所有以01-开始的日期(字符串)将是您需要的行。 (如果日期格式为dmy)

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

如果要在数据库中查找每个月的第一天,可以使用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

样本演示

根据评论编辑

如果要查找每月,年份组的最小日期,则可以通过使用日期值并按月份和年份分组来使用自我联接

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

示例演示2 我已经更新了一些数据以更好地分析

您可以尝试以下方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM