| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Работа с датой |
| Автор: Larrr 25.6.2007, 10:59 |
| Такой вопрос - в базе есть таблица со стобцами "цена" и "дата", где дата - дата записи цены в таблицу. Как выселектить все цены, не старше 15 дней? SELECT price FROM Ad WHERE DATEDIFF(day, Ad.insert_time, getdate()) < 15; не работает... |
| Автор: SergKO 25.6.2007, 13:30 | ||
Попробуйте так
PS старайтесь не делать вычислений в условиях, обычно это приводит к скану таблицы и к замедлению выполнения запроса. |
| Автор: kobra 25.6.2007, 13:56 |
| запрос верный. что не работает? |
| Автор: SergKO 25.6.2007, 14:37 |
Вообще-то, да. Запрос-то верный (просто совсем нерациональный). А в самом деле, в чем проблема проявляется? |
| Автор: Kolia 17.7.2007, 16:33 | ||||||||||
| Даты сравниваются достаточно часто. Поэтому я написал отдельную функцыю для сравнения дат uf_compare_dates(date1, date2, with_time) date1 - datetime. Дата от date2 - datetime. Дата до with_time - bit. 1 или 0. 1 - сравнивать с учетом времени. 0 - сравнивать без учета времени. Ведь если вчера внесли информацию в 15.00, а сегодня в 12.00 ты запустишь свой селект, то ничего не получишь, так как сутки еще не прошли. Внутри функции даты конвертирую в числа. Если (with_time = 0) - в int, (with_time = 1) - в decimal. Вобщем, вот моя реализация
Если нужна дата без времени
|