SQL Server LIKE子句的问题

时间:2011-07-08 17:25:46

标签: sql-server sql-like

我确信这是一个非常简单的问题,但我无法弄明白。这是我的疑问:

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 个答案:

答案 0 :(得分:1)

如果该字段的数据类型为datetimesmalldatetime,那么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是包容性的。

答案 1 :(得分:0)

试试这个:

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