MYSQL, Есть задача, нийти в базе записи которые ранее текущей даты на 45 дней.
всю голову сломал, как правильно создать запрос непойму.
Дата записей в базе храниться в формате yyyy-mm-dd, тип поля DATEИз ''...WHERE dog_data <= (CURRENT_DATE - 45) ...'' ничего не получилось ...
Помогите советом...
CURRENT_DATE - INTERVAL 45 DAY
>CURRENT_DATE - INTERVAL 45 DAYОоооо спасибо !!! то что надо !
>CURRENT_DATE - INTERVAL 45 DAYЛюбопытно, а как получить количество дней (в днях) с такой-то даты по текущее число, с учетом что дней больше чем 31, например 45 ?
А еще круче, рабочих дней, - праздники, - выходные ?
>Любопытно, а как получить количество дней (в днях) с такой-то даты по
>текущее число, с учетом что дней больше чем 31, например 45
>?Может вы все таки заглянете в мануал, вместо задания вопросов на каждый чих?
>А еще круче, рабочих дней, - праздники, - выходные ?Список праздников для вашей конторы мускул должен получать из космоса? К сожалению расширение сознания в нем не предусмотрено :)
>Список праздников для вашей конторы мускул должен получать из космоса? К сожалению
>расширение сознания в нем не предусмотрено :)нет, достаточно суббот + воскресений, по поводу мануалов, детально изучил "работа и преобразование даты в mysql" - но в явной форме ненашел, если вы кините ссылку на мануал где описан подход для решения данной задачи буду весьма признателен ... спасибо.
На моей локальной копии мануала functions.html#date-and-time-functionsЧитаем описание DATEDIFF и CURDATE, комбинируем и получаем
select DATEDIFF(CURDATE(),'1997-12-31');
+----------------------------------+
| DATEDIFF(CURDATE(),'1997-12-31') |
+----------------------------------+
| 3646 |
+----------------------------------+Еще раз для тех кто в танке, где в локали указываются праздничные и выходные дни? Откуда мускул должен знать когда у вас выходной?
Спасибо, в моем мануале этого ИМХО нет, mysql 3.23.54
кстати, а с какой версии это работает ?# mysql -e "select DATEDIFF(CURDATE(),'1997-12-31')"
ERROR 1064 at line 1: You have an error in your SQL syntax near '(CURDATE(),'1997-12-31')' at line 1
>Еще раз для тех кто в танке, где в локали указываются праздничные
>и выходные дни? Откуда мускул должен знать когда у вас выходной?
>В принципе согласен, но есть же функция CURDATE, в принципе "система" в курсе какой сегодня день, понедельник или суббота ... И мне кажеться что произвести обратный отсчет до искомой даты исключая по среднеарифметическому, вычислить кол-во дней до ближайшего воскресенья + ( на каждые 7 дней - 2 ) = РАБОЧИХ ДНЕЙ, ... не есть проблема.
Надеелся что есть такая встроенная функция ...
>Спасибо, в моем мануале этого ИМХО нет, mysql 3.23.54Ужас какой, где откопали?
>кстати, а с какой версии это работает ?
Без понятия, мне эта функция никогда не была нужна. Вы сказали что в мануале не нашли, я помнил что у мускула до хрена не нужных _мне_ функций работы с датой и засомневался, что нет искомой. Открыл мануал и за пару минут нашел.
>В принципе согласен, но есть же функция CURDATE, в принципе "система" в
>курсе какой сегодня день, понедельник или суббота ... И мне кажеться
>что произвести обратный отсчет до искомой даты исключая по среднеарифметическому, вычислить
>кол-во дней до ближайшего воскресенья + ( на каждые 7 дней
>- 2 ) = РАБОЧИХ ДНЕЙ, ... не есть проблема.
>Надеелся что есть такая встроенная функция ...Я думал только отдельные америкосы и мАсквичи отличаются таким страшным эгоцентризмом. Неужели никогда не приходило в голову, что далеко не везде выходные это суббота+воскресенье, что мускул делали не лично под вас и вашу контору, что он работает и в других странах и адаптируется к стране на основе локали и в локали не указывается какой день недели у вас выходной и какие дни в году праздничные? Про то что понятия выходного/праздничного дня могут различаться для каждой организации и даже для каждого работника в организации (а значит вычисления с ними просто неуместны в движке БД), вы похоже тоже не догадываетесь.