我在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%'
如何解决我的问题,我的错误是什么?
答案 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。这两种解决方案都可行。