从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
作品