2011-10-25 198 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

希望它可以帮助别人!我在这个网站上找到了很多帮助!

相关问题