从日期时间提取小时数(SQL Server 2005)

从日期时间提取小时数(SQL Server 2005),sql,tsql,datetime,sql-server-2005,hour,Sql,Tsql,Datetime,Sql Server 2005,Hour,我可以使用DayDate、MonthDate提取月份和日期。我不能用HOURDate提取小时数。我得到以下错误 'HOUR' is not a recognized built-in function name. 如何提取小时数 SELECT DATEPART(HOUR, GETDATE()); 使用 例如: 也试试这个: DATEPART(HOUR,GETDATE()) SELECT CONVERT(CHAR(8),GETDATE(),108) 。。。您可以在任何粒度类型上使用

我可以使用DayDate、MonthDate提取月份和日期。我不能用HOURDate提取小时数。我得到以下错误

'HOUR' is not a recognized built-in function name.
如何提取小时数

SELECT DATEPART(HOUR, GETDATE());
使用

例如:

也试试这个:

   DATEPART(HOUR,GETDATE()) 
SELECT CONVERT(CHAR(8),GETDATE(),108)

。。。您可以在任何粒度类型上使用它,即:

DATEPART(YEAR, [date])

DATEPART(MONTH, [date]) 

DATEPART(DAY, [date])    

DATEPART(HOUR, [date]) 

DATEPART(MINUTE, [date])

注意:我喜欢日期保留字周围的[]。当然,如果带有时间戳的列标记为date,则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
您必须使用datepart

like 


datepart(hour , getdate())
我不能用HOURDate提取小时数

有一种方法可以调用HOUR,但我不建议使用它,因为DATEPART函数使用:

DATEPARTHOUR,[date]返回军事时间00到23的小时 如果您想要凌晨1点、下午3点等,您需要将其列出:

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
有效

也试试这个:

   DATEPART(HOUR,GETDATE()) 
SELECT CONVERT(CHAR(8),GETDATE(),108)

请把时间之类的东西拼出来,而不要用懒洋洋的速记法,这并不总是你所期望的。请随意维护您自己的代码,但对于教学,我反对推广导致混乱或更糟的懒惰速记。参见这里的第6条和@AaronBertrand,这不是懒惰的速记,而是记录在案的缩写形式。Lazy使用的是比最小文档版本短的简短表单,这可能会起作用,但可能会产生意外后果。@Auspex无法强迫您不完全误解要点或阅读我的话背后的原因。并不是所有记录的都是最佳实践。@AaronBertrand我明白了。但是,您试图强制执行您自己的标准,不正确地编辑多个人的答案。你的最佳实践绝非如此。你的贡献有什么意义?它重复了这个问题的几乎所有其他答案中提供的信息?请在你的答案中添加一些解释,以便其他人可以从中学习。我发现这很有用:选择FORMATgetdate,'hh:mm:ss','en US''Time'
SELECT CONVERT(CHAR(8),GETDATE(),108)
select convert(time,GETDATE())