2011-09-27 6 views
0

SQL Server 2005에서 작업이 시작된 시간의 표현을 만들고 싶습니다. 나는 실제 시작 시간 인 '2010-10-01 12 : 30 : 00.000'입니다 datetime 있습니다. 내가 끝내고 싶은 것은 작업이 시작된 시간 인 '12 : 00 '입니다. '30 '분을 푸는 방법에 대한 좋은 아이디어가 있습니까? 그냥 날짜 시간 값에서 분/초/공장을 제거하지만, 날짜로 유지 DATEADD/DATEDIFF 사용하고자하는 경우SQL Server 2005 datetime에서 작업을 시작한 시간을 만들려고합니다.

+0

'12 : 00' (문자열) 또는'2010-10-01T12 : 00 : 00' (여전히 datetime 값)을 원하십니까? –

+0

나는 'between'절에서 사용할 수 있도록 datetime 값으로 유지해야합니다. –

답변

0
declare @dt datetime 
set @dt = '2010-10-01 12:30:00.000' 
select convert(char(5), dateadd(hour, datediff(hour, 0, @dt), 0), 108) 

결과 :

: 날짜 시간

declare @dt datetime 
set @dt = '2010-10-01 12:30:00.000' 
select dateadd(hour, datediff(hour, 0, @dt), 0) 

결과

12:00 

2010-10-01 12:00:00.000 
+0

이것이 정확히 (datetime으로) 필요한 것입니다. 어쨌든 나는 시간 만 얻을 수 있고 datetime으로 유지할 수 있습니까? –

+0

@Peter - datetime에는 항상 날짜 부분이 있습니다. 다른 날짜의 시간을 비교해야하는 경우 비교하기 전에 동일한 날짜 부분을 갖도록 값을 수정할 수 있습니다. –

+0

필자는 비교하기 전에 입력을 문자열 값으로 변경했으며 완벽하게 도움을 주셔서 감사합니다. –

0

:

select DATEADD(hour,DATEDIFF(hour,0,`2010-10-01T12:30:00`),0) 

2010-10-01T12:00:00을 반환하는.

+0

시간 만 가져올 수 있습니까? –

+0

* 2008 이전의 SQL Server *에서 유일한 datetime 관련 datatype은'datetime'입니다. 이것은 날짜와 시간 구성 요소를 둘 다 가지고 있습니다. 예를 들어 초기화에 사용 된 문자열 리터럴에 지정하지 않은 경우에도 마찬가지입니다. 두 날짜의 시간 부분을 비교하고 두 날짜를 모두 무시하고 분을 무시하고 싶다면'DATEPART (hour, )'을 사용하고 정수를 비교하면됩니다. –

+0

안녕하세요 Damien, 나는 당신과 미카엘의 충고를 따랐고 입력 날짜를 변경하여 시간 (시간) 만 비교할 수 있도록했습니다. 이것에 대한 귀하의 도움에 정말 감사드립니다. 모든 것이 훌륭하게 작동합니다. –

0

이것은 당신이 원하는 것을 할 것입니다 :

SELECT DATEADD(hh, DATEDIFF(hh, '20000101', [DateField]), '20000101')