Как вычесть 30 дней из текущей даты и времени в mysql?



Как вычесть 30 дней из текущей даты и времени в mysql?



SELECT * FROM table
WHERE exec_datetime BETWEEN DATEDIFF(NOW() - 30 days) AND NOW();
840   8  

8 ответов:

SELECT * FROM table
WHERE exec_datetime BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW();

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

для тех, кто не хочет использовать DATE_SUB используйте CURRENT_DATE:

SELECT CURRENT_DATE - INTERVAL 30 DAY

давайте не будем использовать NOW() поскольку вы теряете кэширование или оптимизацию запросов, потому что запрос каждый раз отличается. Просмотреть список функций, которые вы не должны использовать в документация MySQL.

в приведенном ниже коде предположим, что эта таблица растет со временем. Добавлен новый материал и вы хотите показать только вещи за последние 30 дней. Это самый распространенный случай.

обратите внимание, что дата была добавлена в виде строки. Лучше добавить дату таким образом, из вашего кода вызова, чем использовать NOW() функция, как это убивает кэширование.

SELECT * FROM table WHERE exec_datetime >= DATE_SUB('2012-06-12', INTERVAL 30 DAY);

можно использовать BETWEEN Если вы действительно просто хотите вещи с этой самой секунды до 30 дней до этой самой секунды, но это не общий случай использования в моем опыте, поэтому я надеюсь, что упрощенный запрос может служить вам хорошо.

вы также можете использовать

select CURDATE()-INTERVAL 30 DAY

MySQL вычитает дни отныне:

select now(), now() - interval 1 day

принты:

2014-10-08 09:00:56     2014-10-07 09:00:56
SELECT date_format(current_date - INTERVAL 50 DAY,'%d-%b-%Y')

вы можете форматировать с помощью формата даты в SQL.

другой способ

SELECT COUNT(*) FROM tbl_debug WHERE TO_DAYS(`when`) < TO_DAYS(NOW())-30 ;

Если вам нужна только дата, а не время использования:

select*from table where exec_datetime
between subdate(curdate(), 30)and curdate();

С curdate() опускает компонент времени, это потенциально быстрее now() и более "семантически правильно" в тех случаях, когда вас интересует только дата.

и subdate()2-арность перегрузки потенциально быстрее, чем с помощью interval. interval предназначен для случаев, когда вам нужна не компонента.

Comments

    Ничего не найдено.