0

我正在尝试返回表中具有特定日期但也具有特定小时的行。

目前,我可以使用以下方法很好地处理查询的日期部分:

CONVERT(VARCHAR(25), col1, 126) LIKE '2012-11-05%' 

这完美地工作并返回 col1 值为 11 月 5 日的所有行。但是,当我还想像这样将小时添加到末尾时:

CONVERT(VARCHAR(25), col1, 126) LIKE '2012-11-05 15%' 

该查询不返回任何行,即使有些行的小时数设置为 15。

看起来查询的时间元素需要某种不同的语法?我只是想知道是否有人可以证实这一点?

4

2 回答 2

1

在 SQL Server 中:

create table #test(part varchar(10),lastTime datetime)
go

insert into #test (part ,lastTime )
values('A','2012-11-05 10:30')

insert into #test (part ,lastTime )
values('B','2012-11-05 15:00')

insert into #test (part ,lastTime )
values('A','2012-11-05 16:15')

go

select * from #test where CONVERT(varchar,lastTime,126) like '2012-11- 05T15 %' ----OK

B   2012-11-05 15:00:00.000

select * from #test where CONVERT(varchar,lastTime, 21 ) like '2012-11-05 15%' ----OK

B   2012-11-05 15:00:00.000

select * from #test where CONVERT(varchar,lastTime,21) like '2012-11-05 %15%' -- 有错误

B   2012-11-05 15:00:00.000
A   2012-11-05 16:15:00.000

考虑性能:

select * from #test where lastTime  >= CONVERT(datetime, '2012-11-05 15:00:00') and lastTime  < CONVERT(datetime, '2012-11-05 16:00:00')
于 2012-11-08T01:42:47.140 回答
0
CONVERT(VARCHAR(25), col1, 126) LIKE '2012-11-05T15%' 

http://msdn.microsoft.com/en-us/library/ms187928.aspx

格式 126 返回 ISO8601 yyyy-mm-ddThh:mi:ss.mmm(无空格)

于 2012-11-07T20:59:12.857 回答