在SQL Server 2008查询中使用where where子句时使用dash

时间:2016-08-30 21:06:51

标签: sql sql-server sql-server-2008

我在SQL Server 2008中有一个包含此类数据的表:

id  TimeStamp
--------------------------
1   2016-02-19 11:52:01 AM
2   2016-02-21 11:30:05 AM

我正在尝试选择2016年2月19日保存的此类数据。我正在使用下面的查询,但它返回的结果没有任何值。

select * 
from myTable 
where [TimeStamp] like '2016-02-19%'

然而,当我写下面的查询时,我可以获得2016年保存的所有数据。所以我认为破折号可能有问题吗?

select * 
from myTable 
where [TimeStamp] like '%2016%'

如何解决我的问题,我的错误是什么?

4 个答案:

答案 0 :(得分:4)

不要将like与日期一起使用。使用简单的比较:

where [TimeStamp] >= '2016-02-19' and [TimeStamp] < '2016-02-20'

答案 1 :(得分:2)

另一种选择是

where cast([TimeStamp] as date) = '2016-02-19'

答案 2 :(得分:0)

使用CONVERT

SELECT * from myTable where CONVERT(NVARCHAR,[TimeStamp],112) =  '20160219'

答案 3 :(得分:0)

或者如果要使用“like”命令将数据转换为varchar。这两种解决方案都可行。