从日期时间提取小时数(SQL Server 2005)
我可以使用DayDate、MonthDate提取月份和日期。我不能用HOURDate提取小时数。我得到以下错误从日期时间提取小时数(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) 。。。您可以在任何粒度类型上使用
'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())