2012-11-07 2 views
0

특정 날짜가 있지만 특정 시간이있는 행을 테이블에서 반환하려고합니다. 사용하여 내가 쿼리 잘의 날짜 부분을 처리 할 수있는 순간 datepart에 대한 SQL Server LIKE이 time 요소에 대해 작동하지 않습니다.

: 완벽하게 작동하고 COL1은 5 년 11 월 값을 가진 모든 행을 반환

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

. 그러나 나는 또한이 같은 말에 시간을 추가 할 때 : 15 그것은 시간 요소처럼 보이는

로 설정 한 시간과 행이 있더라도,

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

은 그 쿼리에 행을 반환하지 않습니다 쿼리의 일부 구문이 필요합니까? 나는 누군가가 이것을 확인할 수 있는지 궁금해했다.

+2

대신 간격을 확인해야합니다. 'col1> = '2012-11-05T15 : 00 : 00'및 col1 < '2012-11-05T16 : 00 : 00'' –

+0

날짜를 문자열로 변환하지 마십시오. 이유가 없습니다. –

답변

1

: #에서

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 

선택 * 'CONVERT (varchar, lastTime, 126)이'2012-11- 05T15 % '와 같은 부분을 테스트합니다. ---- OK

B 2012-11-05 15:00:00.000 

선택 * #test 변환 '2012년 11월 5일 15 %'등 (VARCHAR, lastTime, 21) ---- OK

B 2012-11-05 15:00:00.000 

선택 * #test 변환 '2012년 11월 5일 % 15 %'--had 버그 같은 (VARCHAR, lastTime, 21)

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

고려 perfermance :

select * from #test where lastTime >= CONVERT(datetime, '2012-11-05 15:00:00') and lastTime < CONVERT(datetime, '2012-11-05 16:00:00') 
관련 문제