Как я могу выбрать интервал времени с прошлого месяца?, и он также должен быть между 13:00 с последнего дня последнего месяца до полудня фактического дня. - PullRequest
0 голосов
/ 23 апреля 2020

Я пытался решить эту проблему в течение нескольких часов, пока что я достиг что-то вроде этого:

SELECT * FROM mytable WHERE DATE(datetime_column) 
  BETWEEN DATE_SUB(DATE_FORMAT(NOW(),'%Y-%M-01'),INTERVAL 1 DAY) AND NOW()
    AND HOUR(datetime_column) > = '13'
     ORDER BY
         datetime_column

Помимо дневного интервала, мне также нужен часовой интервал, который должен быть между 13 ч. вечера последнего дня последнего месяца и до полудня для текущей даты.

Кажется, что скрипта не работает с текущим запросом, но работает в моей базе данных, но проверьте скрипку для получения дополнительной информации:

https://www.db-fiddle.com/f/a3jui7aPMevU81Cka4BqXg/0

И образцы данных:


CREATE TABLE mytable  (
  id INT,
  datetime_column DATETIME
);
INSERT INTO mytable (id,datetime_column) VALUES 
(1,'2020-03-31 08:00:00'),
(2,'2020-03-31 13:00:00'),
(3,'2020-04-02 14:30:00'),
(4,'2020-04-06 18:00:00'),
(5,'2020-04-21 05:00:00'),
(6,'2020-04-23 13:00:00'),
(7,'2020-04-23 14:00:00');

Если необходима дополнительная информация, пожалуйста, дайте мне знать.

1 Ответ

1 голос
/ 24 апреля 2020

Я думаю, это то, что вы хотите

SELECT * FROM mytable
WHERE (
          DATE(datetime_column) > LAST_DAY(CURDATE() - INTERVAL 1 MONTH)
      AND datetime_column < (CURDATE() + INTERVAL 12 HOUR)
      )
OR (
         DATE(datetime_column) = LAST_DAY(CURDATE() - INTERVAL 1 MONTH)
    AND  HOUR(datetime_column) >= 13
);

+------+---------------------+
| id   | datetime_column     |
+------+---------------------+
|    2 | 2020-03-31 13:00:00 |
|    3 | 2020-04-02 14:30:00 |
|    4 | 2020-04-06 18:00:00 |
|    5 | 2020-04-21 05:00:00 |
+------+---------------------+

2 набора в наборе (0,00 se c)

Здесь LAST_DAY(CURDATE() - INTERVAL 1 MONTH) дает последний день предыдущего месяца.

И datetime_column < (CURDATE() + INTERVAL 12 HOUR) проверяет, не наступило ли это время до середины сегодняшнего дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...