mysql - 获取每个月&年的第一个日期和对应的值

标签 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

每年的每个月。

最佳答案

如果你想在数据库中找到每个月的第一天,你可以使用 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 我已经在 fiddle 中更新了一些数据以便更好地分析

关于mysql - 获取每个月&年的第一个日期和对应的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25832580/

相关文章:

mysql - 在 Doctrine 模式中,当我添加新字段时无法更新

mysql - 将具有 1 到 N 关系的表合并为 1 行记录,并使用 N 条记录的最后一个值

MySQL,搜索包含十六进制字符的数据

java - java 8中的Group By具有多级分组

r - 日期结束时对日期变量进行分组

mysql - 分组方式

java - TestNG 测试继承和组

php - 无法将值绑定(bind)到数据库 php 中的表

mysql - MySQL 中的 UNION ALL 和 LIMIT

c# - 在 wpf 中对 ListView 进行分组