#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:
Используйте функцию mysql date_sub
Комментарии:
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