Запрос по прошлому месяцу, прошлой неделе, вчерашнему дню и так далее

#php #mysql #date #timestamp

#php #mysql #Дата #временная метка

Вопрос:

У меня есть orders таблица, которая содержит orderID amp; order_date .

Я пытаюсь запросить данные по прошлой неделе, прошлому месяцу или даже по вчерашнему дню, однако я не могу понять, как вычесть время из текущего времени

Мое order_date поле имеет TIMESTAMP тип, любая идея, любая помощь были бы оценены

Ответ №1:

Вы можете использовать DATE_SUB:

 ... WHERE order_date > DATE_SUB( NOW(), INTERVAL 1 MONTH )
  

за то, что взял прошлый месяц,

 ... WHERE order_date > DATE_SUB( NOW(), INTERVAL 1 WEEK )
  

для получения прошлой недели,

 ... WHERE order_date > DATE_SUB( NOW(), INTERVAL 1 DAY )
  

для получения сегодняшнего дня и

 ... WHERE order_date BETWEEN ( DATE_SUB( NOW(), INTERVAL 2 DAY ), DATE_SUB( NOW(), INTERVAL 1 DAY ) )
  

для получения предыдущего дня.

Это то, о чем вы просили?

Комментарии:

1. Точно, эти примеры — это именно то, о чем я просил, большое спасибо, я бы проголосовал за ваш ответ, если бы у меня были привилегии, еще раз спасибо

2. могу ли я связаться с вами в частном порядке? как? 😀

Ответ №2:

Комментарии:

1. выглядит великолепно, но не могли бы вы показать мне пример выбора всего за определенный интервал?

2. спасибо, перейдите к dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html существует так много примеров, и, пожалуйста, погуглите, вы найдете множество из них, удачи

Ответ №3:

Ключ здесь в DATEDIFF и HAVING.

В течение последних 30 дней попробуйте что-то вроде этого (из памяти):

 SELECT orderID, DATEDIFF(order_date, NOW()) AS days FROM table HAVING days <= 30