2010-06-23 198 views
3

如何從datetime中選擇小時?從日期時間獲取小時?

我正在尋找相當於Oracle的TO_CHAR(d, 'HH24'),這將返回172010-06-23 17:22:31


我想了解的最佳時機(最好的答案/問題 - 比)問在計算器上的SQL - 相關的問題,使用Data Explorer。我得到它的工作,但我敢肯定有一個更優雅的版本。

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 

BTW,最好的時機似乎是15:0016:00之間 - 猜我問過晚:)

回答

4

使用DATEPART

select DATEPART(hour, DateTimeField) as Hour from Table 
+0

啊,謝謝。這就是我一直在尋找的。 – 2010-06-23 17:38:10

1

使用DATEPART()TSQL以「小時的部分ID功能「

看這一個很好的解釋

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

+0

感謝額外的鏈接('+ 1') – 2010-06-23 17:38:45

+0

@PeterLang鏈接是死 – 2017-08-29 14:03:05

1

這應該工作

SELECT DatePart(hh, GETDATE()) 
+0

是的,那也可以('+ 1') – 2010-06-23 17:41:16

0

datepart(hh,dateColumn)應該讓你的小時部分的任何日期時間。

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)