从日期时间开始计时?

时间:2010-06-23 17:23:48

标签: sql sql-server datetime

如何从datetime

中选择小时

我正在寻找相当于Oracle的TO_CHAR( d, 'HH24' ),它会为17返回2010-06-23 17:22:31


我试图找出使用Data Explorer在StackOverflow上询问SQL相关问题的最佳时间(最佳答案/问题比例)。我得到了它的工作,但我确信有一个更优雅的版本。

Select
  Left( Convert(VARCHAR(10), creationDate, 8 ), 2 ) As hour,
  Convert(Float, Count(*)) / Count(Distinct p.parentId) As ratio
From posts p
Join postTags pt On ( pt.postId = p.parentId )
Join tags t On ( t.id = pt.tagId )
Where p.postTypeId = 2 And t.tagName = '##TagName##'
Group By Left( Convert(VARCHAR(10), creationDate, 8 ), 2 )
Order BY hour

顺便说一句,最佳时间似乎介于15:0016:00之间 - 猜猜我要求太晚了:)

6 个答案:

答案 0 :(得分:4)

使用DATEPART

select DATEPART(hour, DateTimeField) as Hour from Table

答案 1 :(得分:1)

使用DatePart()tsql函数,部件ID为“hour”

看看这个是一个很好的解释

http://support.microsoft.com/kb/186265

答案 2 :(得分:1)

这应该有效

SELECT DatePart(hh, GETDATE()) 

答案 3 :(得分:0)

datepart(hh,dateColumn)应该为您提供任何日期时间的小时组件。

答案 4 :(得分:0)

SELECT HOUR(datetimefield) AS hour

HOUR()函数应该完成这项工作。 来源http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_hour

答案 5 :(得分:0)

Select DatePart(hh, CreationDate) As Hour
    , Convert(Float, Count(*)) / Count(Distinct p.parentId) As Ratio
From posts As p
    Join postTags As pt 
        On ( pt.postId = p.parentId )
    Join tags As t 
        On ( t.id = pt.tagId )
Where p.postTypeId = 2 
    And t.tagName = '##TagName##'
Group By DatePart(hh, CreationDate)