2016-06-28 80 views
0

我正在使用SQL Server 2008R2。 我想在輸出中獲取日期的一部分,並且我的列處於datetime數據類型中。 例如, 如果當前日期和時間是2016-06-28 17:34:12.060,那麼我需要輸出17:00只有小時:00分鐘。需要部分日期

我已經試過這個到現在爲止,

Select DateName(HH,SUBSTRING('2016-06-28 17:34:12.060',12,5)) +':00' 

這給我的權利output.But當我通過列名這是datetime數據類型,然後提示錯誤,

Select DateName(HH,SUBSTRING(TimeInHour,12,5)) +':00' 

給出錯誤,

參數數據類型時間是子串函數的參數1無效。

我知道我在SUBSTRING()錯誤的地方,但我真的不知道如何實現這個輸出。 幫助將是非常明顯的。我需要輸出爲HH:00,小時將不過是00分鐘。

+0

[SQL中的日期時間字段的時間部分(可能的重複http://stackoverflow.com/questions/12354699/time-part-of-datetime-field-in-sql) –

+0

yup可能但不完全是 – Ruhaan

+2

有幾個選項。你可以[轉換](https://technet.microsoft.com/en-us/library/ms187928(v=sql.105).aspx)從一種數據類型到另一種。或者你可以確保SQL Server的[日期和時間函數](https://msdn.microsoft.com/en-GB/library/ms186724.aspx)。 –

回答

5

爲什麼要使用substring()datename()的第二個參數應該是日期/時間數據類型。所以,只是做:

Select DateName(hour, '2016-06-28 17:34:12.060') + ':00' 
+0

它對我很好,當我把'2016-06-28 17:34:12.060',但它不是確切的日期。我有一個列名TimeInHour,它包含我必須得到結果的日期列表。並且該列在datetime數據類型 – Ruhaan

+0

現在是它的工作,非常感謝@戈登Linoff – Ruhaan

1

試試這個:

Select CAST(DATEPART(hour,'2016-06-28 17:34:12.060') AS VARCHAR(2)) +':00' 
1

下面是可能會有所幫助

SELECT CONVERT(VARCHAR(50),DATEPART(YY,'2016-06-28 17:34:12.060')) -- Year 
SELECT CONVERT(VARCHAR(50),DATEPART(mm,'2016-06-28 17:34:12.060')) -- Month 
SELECT CONVERT(VARCHAR(50),DATEPART(d,'2016-06-28 17:34:12.060')) -- Day 
SELECT CONVERT(VARCHAR(50),DATEPART(HH,'2016-06-28 17:34:12.060'))+':00' -- Hour 
SELECT CONVERT(VARCHAR(50),DATEPART(mi,'2016-06-28 17:34:12.060'))+':00' -- Minutes 
SELECT CONVERT(VARCHAR(50),DATEPART(ss,'2016-06-28 17:34:12.060')) -- Seconds 
SELECT CONVERT(VARCHAR(50),DATEPART(ms,'2016-06-28 17:34:12.060')) -- Millisecond 
0
select convert(varchar, datepart(hour, getdate())) + ':' + convert(varchar, datepart(second, getdate())) 
1

您需要先投你DATETIME型列碼,使用CAST功能

Select DateName(HH,SUBSTRING(CAST(ColumnName AS VARCHAR(30)),12,5)) +':00' 

或者替代要做的就是使用LEFTCONVERT

SELECT LEFT(CONVERT(VARCHAR, ColumnName ,108),2)+':00'