2011-07-08 48 views
0

我确定这是一个非常简单的问题,但我一直无法弄清楚。这里是我的查询:SQL Server 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

我做过很多类似的事情多次,没有麻烦,但无论我尝试什么,上述查询都不会返回结果。 (是的,从今天和昨天的专栏中都有时间戳)。

我犯了语法错误吗?我疯了吗?我的数据库中是否有gnome与我的查询混淆?请帮忙!非常感谢!

回答

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是包容。

+0

美丽!非常感谢你的解释。我知道它一定很简单,我只是没有看到它,但是完全正确。 – Joshua

+0

@Josh - 乐于帮忙。只要你有意外的行为,你可以做的第一件事就是检查你的数据类型! – JNK

0

试试这个:

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