MySQL-Получить последние данные за 1-е 4 дня текущего месяца - PullRequest
0 голосов
/ 25 марта 2019

В моей базе данных есть таблица, в которой хранится значение энергии meters 1-го числа каждого месяца. Если счетчик отключен, он сохранит значение следующего дня.

Ниже мой случай

У меня есть запись за последние 2 месяца February и March. Данные February имеют значение 2019-02-01 00:00:00, но в месяц есть 4 строки March. Смотрите изображение ниже

enter image description here

На изображении выше марта 1st,2nd and 3rd марта имеет нулевое значение FA, но 4 марта содержит некоторое значение.

Что я наделал?

Я могу выбрать строки, имеющие значения FA.

Что я хочу сделать?

  1. Я хочу получить только данные текущего месяца, т. Е. Текущий месяц равен March, поэтому он должен получить только запись за март, а затем в следующем месяце он должен получить только April запись и т. Д.
  2. Запрос не должен превышать дневной лимит более чем на 4, т. Е. Он должен проверять запись только в течение первых четырех дней каждого месяца.

Вот мой DB-Fiddle

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Вы можете попробовать ниже -

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)
1 голос
/ 25 марта 2019

один из способов решить эту проблему - ЗА ТО, ЧТО я хочу получить только данные текущего месяца, т.е. текущий месяц - март, поэтому он должен получить только запись за март, а затем в следующем месяце - только апрельскую запись и т. Д.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...