Проблемы с предложением SQL Server LIKE - PullRequest
0 голосов
/ 08 июля 2011

Я уверен, что это ОЧЕНЬ простая проблема, но я не смог понять это.Вот мой запрос:

select column1 from table1 with(nolock)
where column1 like '2011-07-0[78]%'
order by column1 desc

Как вы можете сказать, я запрашиваю строку в поисках меток времени, которые были получены либо сегодня, либо вчера.

Полная метка времени в одной из этих строк выглядит следующим образом:

2011-07-08 12: 16: 39.553

Я сделалПодобные вещи много раз без проблем, но приведенный выше запрос не дает результатов, что бы я ни пытался.(Да, в столбце есть метки времени от сегодняшнего и вчерашнего дня.)

Я допустил синтаксическую ошибку?Я сумасшедший?Есть ли в моей БД гномы, возни с моим запросом?Пожалуйста помоги!Большое вам спасибо!

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Если тип данных для этого поля равен datetime или smalldatetime, то LIKE не будет работать должным образом.

Вы можете выполнить DATEPART функцию или BETWEEN, например:

WHERE DATEPART(Year, column1) = 2011
AND DATEPART(Month, column1) = 7
AND DATEPART(Day, column1) IN (7, 8)

или

WHERE column1 BETWEEN '2011-07-07' AND '2011-07-08'

Имейте в виду, BETWEEN включительно.

0 голосов
/ 08 июля 2011

попробуйте это:

select column1 from table1 with(nolock)
where Cast(column1 as DateTime) between '2011-07-07' AND '2011-07-08'
order by column1 desc
...