MySQL-获取当月第1天第4天的最新数据

时间:2019-03-25 09:34:06

标签: mysql datetime select

我的数据库中有一个表,其中存储着meters每月1号能量值。如果仪表离线,它将存储第二天的值。

下面是我的情况

我有过去两个月FebruaryMarch的仪表记录。 February的数据为2019-02-01 00:00:00,但月份March有4行。见下图

enter image description here

在上图中,3月的1st,2nd and 3rd的值为FA,但3月4日的值却有些空。

我做了什么?

我能够选择值为FA的行。

我想做什么?

  1. 我只想获取当前月份的数据,即当前月份为March,因此它应该仅获取行军记录,然后下个月则仅获取April记录,依此类推。
  2. 查询的天数不得超过4天,即每月仅检查前四天的记录。

这是我的DB-Fiddle

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

解决这个问题的一种方法是 对于 我只想获取当前月份的数据,即当前月份是3月,因此它应该仅获得3月记录,然后下个月应该仅获得4月记录,依此类推。

means month(TV)= month(now())

和 查询的天数不得超过4天,即每个月的前四天只应检查记录。 means day(TV)<= 4

最后是您的查询

select * from `biz_pub_data_f_energy_m` a
 where a.`DATA_ID` = '1b9716122dd5408691a063227316ac0a'
 and a.`FA` is NOT NULL and month(TV)= month(now())
 and day(TV)<= 4

答案 1 :(得分:1)

您可以在下面尝试-

DEMO

select * from `biz_pub_data_f_energy_m` a
where a.`DATA_ID` = '1b9716122dd5408691a063227316ac0a'
and a.`FA` is NOT NULL and tv>=date(DATE_SUB(now(),INTERVAL DAYOFMONTH(now())-1 DAY))
and tv<=DATE_ADD(date(DATE_SUB(now(),INTERVAL DAYOFMONTH(now())-1 DAY)), INTERVAL 4 DAY)