2011-10-25 196 views
3

我正在使用Microsoft SQL Server 2000,並且需要將我的時間列轉換爲24小時時間,而不僅僅是上午9:30,下午12:30等。試圖對這一列進行排序,我認爲它不起作用,因爲它只是在數字上看待事物,而不是時間。我認爲我需要的功能可以用FORMAT(Time,HH:mm:ss)來完成,但這似乎不是SQL Server中的一個功能,所以我現在卡住了。在SQL Server中將時間轉換爲24小時時間

+0

演員('1:30 PM'時間)? –

+0

如果該列的類型爲DateTime,則排序應該是正確的。您看到的字符串只是底層時間的表示。 – Ray

回答

9
+0

這是要轉換現有列的值還是隻獲取當前時間? – gdawgrancid

+1

@gdawgrancid:將GETDATE更改爲您的值。如果該值不是日期時間,則CAST先到日期時間。 – gbn

+0

@gdawgrancid將日期時間轉換爲格式108,並獲得最後5個字符... –

0

您也可以嘗試這一個,

select CONVERT(time, CONVERT(varchar,CONVERT(date, getdate()))+ ' 02:24 PM', 120) 

上面的查詢將返回14:24:00.0000000

如果你想只在部分時間忽略毫秒,

select convert(varchar(8),CONVERT(time, CONVERT(varchar,CONVERT(date, getdate()))+ ' 02:24 PM', 120)) 

我在SQL 2008中測試了以上,它工作正常。

1

我第一次發貼!我必須從M/D/YYYY h:mm:ss AM/PM轉換爲日期時間。請注意我的本地時間是DD-MM-YYYY,所以我必須在轉換爲日期時間之前以該格式進行轉換。要轉換的字段名稱是表N_IsaacForm中的「Valeur」。這裏是我做到了在SQL 2008:

select NIF.Valeur, CASE WHEN CHARINDEX('PM',NIF.Valeur) = 0 
THEN CONVERT(datetime,substring(NIF.Valeur, P2.Pos + 1, P3.Pos - P2.Pos - 1) + '-' 
+ RIGHT('0' + substring(NIF.Valeur, P3.Pos + 1, P4.Pos - P3.Pos - 3),8) + '-' 
+ RIGHT('0' + substring(NIF.Valeur, P1.Pos + 1, P2.Pos - P1.Pos - 1),2) + ' ' 
+ RIGHT('0' + substring(NIF.Valeur, 1, P1.Pos-1),2)) 
--add 12 hours if PM 
ELSE DATEADD(hour,12,CONVERT(datetime,substring(NIF.Valeur, P2.Pos + 1, P3.Pos - P2.Pos - 1) + '-' 
+ RIGHT('0' + substring(NIF.Valeur, P3.Pos + 1, P4.Pos - P3.Pos - 3),8) + '-' 
+ RIGHT('0' + substring(NIF.Valeur, P1.Pos + 1, P2.Pos - P1.Pos - 1),2) + ' ' 
+ RIGHT('0' + substring(NIF.Valeur, 1, P1.Pos-1),2))) 
END 

FROM N_IsaacForm AS NIF (nolock)  
cross apply (select (charindex('/', NIF.Valeur))) as P1(Pos) 
cross apply (select (charindex('/', NIF.Valeur, P1.Pos+1))) as P2(Pos) 
cross apply (select (charindex(' ', NIF.Valeur, P2.Pos+1))) as P3(Pos) 
cross apply (select (charindex('M', NIF.Valeur, P3.Pos+1))) as P4(Pos) 
WHERE CHARINDEX('M',NIF.Valeur) > 0 --(I had other values in the table with proper format) 

你只需要改變元素的順序來設置特定的本地時間。

結果獲得

  1. 二零一五年八月二十零日上午01點11分31秒---> 2015年8月20日01:11:31.000

  2. 2015年8月19日10: 37:32 PM ---> 2015-08-19 22:37:32.000

  3. 10/7/2015 8:51:37 PM ---> 2015-10-07 20:51:37000

  4. 9/8/2015 3:27:17 PM ---> 2015-09-08 15:27:17.000

希望它可以幫助別人!我在這個網站上找到了很多幫助!

相關問題