URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7062
[ Назад ]

Исходное сообщение
"DATA yyyy-mm-dd как вычислить ?"

Отправлено den68 , 22-Дек-07 18:56 
MYSQL, Есть задача, нийти в базе записи которые ранее текущей даты на 45 дней.
всю голову сломал, как правильно создать запрос непойму.
Дата записей в базе храниться в формате yyyy-mm-dd, тип поля DATE

Из ''...WHERE dog_data <= (CURRENT_DATE - 45) ...'' ничего не получилось ...
Помогите советом...


Содержание

Сообщения в этом обсуждении
"DATA yyyy-mm-dd как вычислить ?"
Отправлено Michelnok , 22-Дек-07 22:04 
CURRENT_DATE - INTERVAL 45 DAY

"DATA yyyy-mm-dd как вычислить ?"
Отправлено den68 , 23-Дек-07 01:38 
>CURRENT_DATE - INTERVAL 45 DAY

Ооооо спасибо !!! то что надо !


"DATA yyyy-mm-dd как вычислить ?"
Отправлено den68 , 23-Дек-07 21:48 
>CURRENT_DATE - INTERVAL 45 DAY

Любопытно, а как получить количество дней (в днях) с такой-то даты по текущее число, с учетом что дней больше чем 31, например 45 ?
А еще круче, рабочих дней, - праздники, - выходные ?


"DATA yyyy-mm-dd как вычислить ?"
Отправлено angra , 24-Дек-07 16:12 
>Любопытно, а как получить количество дней (в днях) с такой-то даты по
>текущее число, с учетом что дней больше чем 31, например 45
>?

Может вы все таки заглянете в мануал, вместо задания вопросов на каждый чих?


>А еще круче, рабочих дней, - праздники, - выходные ?

Список праздников для вашей конторы мускул должен получать из космоса? К сожалению расширение сознания в нем не предусмотрено :)



"DATA yyyy-mm-dd как вычислить ?"
Отправлено den68 , 25-Дек-07 12:46 

>Список праздников для вашей конторы мускул должен получать из космоса? К сожалению
>расширение сознания в нем не предусмотрено :)

нет, достаточно суббот + воскресений, по поводу мануалов, детально изучил "работа и преобразование даты в mysql" - но в явной форме ненашел, если вы кините ссылку на мануал где описан подход для решения данной задачи буду весьма признателен ... спасибо.


"DATA yyyy-mm-dd как вычислить ?"
Отправлено angra , 26-Дек-07 00:33 
На моей локальной копии мануала functions.html#date-and-time-functions

Читаем описание DATEDIFF и CURDATE, комбинируем и получаем

select DATEDIFF(CURDATE(),'1997-12-31');
+----------------------------------+
| DATEDIFF(CURDATE(),'1997-12-31') |
+----------------------------------+
|                             3646 |
+----------------------------------+

Еще раз для тех кто в танке, где в локали указываются праздничные и выходные дни? Откуда мускул должен знать когда у вас выходной?


"DATA yyyy-mm-dd как вычислить ?"
Отправлено den68 , 26-Дек-07 04:12 
Спасибо, в моем мануале этого ИМХО нет, 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 ) = РАБОЧИХ ДНЕЙ, ... не есть проблема.
Надеелся что есть такая встроенная функция ...


"DATA yyyy-mm-dd как вычислить ?"
Отправлено angra , 26-Дек-07 05:18 
>Спасибо, в моем мануале этого ИМХО нет, mysql 3.23.54

Ужас какой, где откопали?

>кстати, а с какой версии это работает ?

Без понятия, мне эта функция никогда не была нужна. Вы сказали что в мануале не нашли, я помнил что у мускула до хрена не нужных _мне_ функций работы с датой и засомневался, что нет искомой. Открыл мануал и за пару минут нашел.

>В принципе согласен, но есть же функция CURDATE, в принципе "система" в
>курсе какой сегодня день, понедельник или суббота ... И мне кажеться
>что произвести обратный отсчет до искомой даты исключая по среднеарифметическому, вычислить
>кол-во дней до ближайшего воскресенья + ( на каждые 7 дней
>- 2 ) = РАБОЧИХ ДНЕЙ, ... не есть проблема.
>Надеелся что есть такая встроенная функция ...

Я думал только отдельные америкосы и мАсквичи отличаются таким страшным эгоцентризмом. Неужели никогда не приходило в голову, что далеко не везде выходные это суббота+воскресенье, что мускул делали не лично под вас и вашу контору, что он работает и в других странах и адаптируется к стране на основе локали и в локали не указывается какой день недели у вас выходной и какие дни в году праздничные? Про то что понятия выходного/праздничного дня могут различаться для каждой организации и даже для каждого работника в организации (а значит вычисления с ними просто неуместны в движке БД), вы похоже тоже не догадываетесь.