DateTime에서 시간 추출 (SQL Server 2005)


179

Day(Date()), 을 사용하여 월과 일을 추출 할 수 있습니다 Month(Date()). 로 시간을 추출 할 수 없습니다 HOUR(Date()). 다음과 같은 오류가 발생합니다.

'HOUR' is not a recognized built-in function name.

시간을 어떻게 추출 할 수 있습니까?

답변:


354
SELECT DATEPART(HOUR, GETDATE());

DATEPART 선적 서류 비치


11
HOUR항상 기대하지 않는 게으른 속기를 사용하는 대신 철자를 쓰십시오 (시도 y). 원하는대로 자신의 코드를 자유롭게 유지하십시오. 그러나 가르치기 위해 혼란 스럽거나 악화되는 게으른 속기 홍보에 반대합니다 . # 6 여기를 참조하십시오 blogs.sqlsentry.com/aaronbertrand/…sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/…
Aaron Bertrand

3
@AaronBertrand "게으른 속기"가 아니라 문서화 된 짧은 형식입니다. "게으른"은 최소한의 문서화 된 버전보다 짧은 짧은 형식을 사용하고 있습니다.이 형식은 작동하지만 의도하지 않은 결과를 초래할 수 있습니다.
Auspex

3
@Auspex 당신이 요점을 완전히 놓치지 않거나 내 말의 이유를 읽도록 강요 할 수는 없습니다. 문서화 된 모든 것이 최선의 방법은 아닙니다.
Aaron Bertrand

5
@AaronBertrand 요점을 알았습니다. 그러나 당신은 ( 여러 사람의 답변 을 부적절하게 편집하는 정도로 ) 자신의 표준 을 시행하려고합니다 . 귀하의 "모범 사례"는 그다지 중요하지 않습니다.
Auspex

29

... 어떤 입도 유형에서도 사용할 수 있습니다.

DATEPART(YEAR, [date])

DATEPART(MONTH, [date]) 

DATEPART(DAY, [date])    

DATEPART(HOUR, [date]) 

DATEPART(MINUTE, [date])

(참고 : 날짜 예약어 주위에 []가 마음에 듭니다. 물론 타임 스탬프가있는 열에 '날짜'라고 표시되어있는 경우)



9

이것도 시도하십시오 :

   DATEPART(HOUR,GETDATE()) 

2

DATEPART(HOUR, [date]) 군사 시간으로 시간을 반환합니다 (00 ~ 23) 1AM, 3PM 등을 원할 경우 시간을 표시해야합니다.

SELECT Run_Time_Hour =
CASE DATEPART(HOUR, R.date_schedule)
    WHEN 0 THEN  '12AM'
    WHEN 1 THEN   '1AM'
    WHEN 2 THEN   '2AM'
    WHEN 3 THEN   '3AM'
    WHEN 4 THEN   '4AM'
    WHEN 5 THEN   '5AM'
    WHEN 6 THEN   '6AM'
    WHEN 7 THEN   '7AM'
    WHEN 8 THEN   '8AM'
    WHEN 9 THEN   '9AM'
    WHEN 10 THEN '10AM'
    WHEN 11 THEN '11AM'
    WHEN 12 THEN '12PM'
    ELSE CONVERT(varchar, DATEPART(HOUR, R.date_schedule)-12) + 'PM'
END
FROM
    dbo.ARCHIVE_RUN_SCHEDULE R


1
select case when [am or _pm] ='PM' and datepart(HOUR,time_received)<>12 
           then dateadd(hour,12,time_received) 
           else time_received 
       END 
from table

공장


1

DATEPART () 함수는 연도, 월, 일,시, 분 등과 같은 날짜 / 시간의 단일 부분을 반환하는 데 사용됩니다.

datepart    ***Abbreviation

year        ***yy, yyyy 
quarter     ***qq, q 
month       ***mm, m 
dayofyear   ***dy, y 
day         ***dd, d 
week        ***wk, ww 
weekday     ***dw, w 
hour        ***hh 
minute      ***mi, n 
second      ***ss, s 
millisecond ***ms 
microsecond ***mcs 
nanosecond  ***ns 

select * 
from table001
where datepart(hh,datetime) like 23

0

HOUR (Date ())로 시간을 추출 할 수 없습니다

ODBC Scalar FunctionsHOUR 를 사용 하여 호출하는 방법이 있습니다 ( DATEPART함수 가 있기 때문에 사용하지 않는 것이 좋습니다 ) .

SELECT {fn HOUR(GETDATE())} AS hour

LiveDemo


-2

datepart ()를 사용해야합니다

like 


datepart(hour , getdate())

8
이 질문에 대한 거의 모든 "답변"에 제공된 정보를 반복하는 기여 포인트는 무엇입니까?
Cindy Meister
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.