|
|
|
Forum Guru
      
участник
Last Login: 20.09.2007 9:51
Сообщ.: 56,
Visits: 90
|
|
| Здравствуйте. Не подскажите как в запросе мне надо переделать дату, чтобы он работал, при вводе даты обычного формата. Например: select * from [table] where [data] ='01.02.06', пока он ничего не выводит, там ведь формат даты день.месяц.год часы.минуты.секунды. Заранее спасибо.
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
| формат это то как ты видишь дату а не как она там хранится раз время не указываешь, значит подразумевается 00:00:00, так что условие надо делать выбором между предыдущей и следующей датой, чтобы в результат вошли все записи от 00:00 до 23:59
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833,
Visits: 16 863
|
|
| Ну значит у тебя нет данных, соответствующих этому времени, т.е. '01.02.06 00:00:00.000'. Если тебя интересуют данные за день, то есть два варианта: 1) Делать выборку с изначальным конвертированием поля даты со временем в дату (т.е. обрезая время). Как - смотрю в FAQ на SQL.RU. Но это очень неэффективный способ. 2) Указывать интервал. Т.е. Between '01.02.06 00:00:00' and '01.02.06 23:59:59.999'
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Я бы сделал так - select * from [table] where datediff(dd, [data], convert(datetime, '01.02.06', 104)) = 0
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833,
Visits: 16 863
|
|
| Так индексы использоваться не будут.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Верно, индекс по полю в случае с DATEDIFF/CONVERT использоваться не будет. Если это критично, то тогда надо использовать вариант c between. Метод с использованием DATEDIFF советовался к использованию в одной из статей на MSDN посвященной эффективной работе с датами на SQL Server, поэтому я ее и привел.
|
|
|
|
|
Forum Guru
      
участник
Last Login: 20.09.2007 9:51
Сообщ.: 56,
Visits: 90
|
|
| Спасибо все большое за советы, наверное всеткиж сделаю c between.
|
|
|
|