从DateTime提取小时(SQL Server 2005)

我可以使用Day(Date())Month(Date())来提取月份和Month(Date()) 。 我不能提取小时,用HOUR(Date()) 。 我得到以下错误。

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

我怎样才能提取小时?

 SELECT DATEPART(HOUR, GETDATE()); 

DATEPART文档

…你可以在任何粒度types上使用它:

 DATEPART(YEAR, [date]) DATEPART(MONTH, [date]) DATEPART(DAY, [date]) DATEPART(HOUR, [date]) DATEPART(MINUTE, [date]) 

(注意:我喜欢date保留字左右的[],当然这是在你的时间戳列被标记为“date”的情况下)

使用datepart 。

例如:

 datepart(HOUR, date) 

也试试这个:

  DATEPART(HOUR,GETDATE()) 

DATEPART()函数用于返回date/时间的单个部分,如年,月,日,小时,分钟等。

 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 

你必须使用datepart()

 like datepart(hour , getdate()) 

我不能提取小时,用HOUR(Date())

有一种方法使用ODBC标量函数调用HOUR (我不推荐使用它,因为有DATEPART函数):

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

LiveDemo

DATEPART(HOUR, [date])在军事时间(00到23 DATEPART(HOUR, [date])返回小时如果你想要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 
 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 

作品