![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
работа в SQL запросах с DATETIME полями как с EXTENDED
Shaman_ © (2006-09-26 21:12:00)Примерная задача:
Есть таблица с полем DATE_CTEATE (DATETIME)
необходимо сделать выборку записей, DATE_CREATE которых на 100 часов меньше текущего времени. Если бы MySQL работал с DATETIME полями как с родным форматом- EXTENDED, все было бы просто SELECT * FROM TABLE_NAME WHERE DATE_CREATE > (NOW()-100*(1/24)) но поскольку она пытается преобразовать числа методом похожим на DateTimeToStr, просто так от даты не отнять нужный интервал времени. С помощью CAST привести DATETIME к EXTENDED тоже не вышло. После CAST получаем примерно следующее число - 20060926212000 ну тоесть дата в строковом формате, с удалением разделителей и преобразованная к простому числу
Может есть какие функции для арифметических операций с DATETIME типом?
Shaman_ (2006-09-26 22:32:00) [1]Johnmen © (26.09.06 22:10) [3]
Вот именно это я искал! Спасибо за помощь!
Shaman_ (2006-09-26 22:30:00) [2]>Johnmen © (26.09.06 21:52) [1]
>А так
>WHERE DATE_CREATE + 100*(1/24)> NOW()
>?
>Desdechado © (26.09.06 21:55) [2]
>для начала попробуй
>select NOW()-100*(1/24) from table where id=1
Спасибо за советы, но в этом направлении копать бесполезно. Уже все перепробовал. В том и дело, что подобные запросы работают не верно
Допустим если выполнить такой запрос:
SELECT NOW()+100*(1/24),NOW()
получим: 20060926221722,2 | 26.09.2006 22:17:18
Надеюсь смысл понятен? :) СУБД не воспринимает дату как EXTENDED, следовательно и арифметические операции как с EXTENDED здесь просто так не пройдут
Johnmen (2006-09-26 22:10:00) [3]Кстати http://www.mysql.ru/docs/man/Date_and_time_functions.html
Desdechado (2006-09-26 21:55:00) [4]для начала попробуй
select NOW()-100*(1/24) from table where id=1
Johnmen (2006-09-26 21:52:00) [5]А так
WHERE DATE_CREATE + 100*(1/24)> NOW()
?