使用军事时间的日期时间字段 - 仅在标准时间内需要时间

时间:2012-02-03 15:21:23

标签: sql-server tsql

我在SQL Server 2008中有一个日期时间字段,以军事格式存储日期和时间(如果您愿意,可以存储国际格式)

示例:

2011-02-15 10:00:00.000
2011-02-15 15:30:00.000
2011-02-15 17:30:00.000

我需要以标准美国时间格式检索此时间部分。

所以

2011-02-15 10:00:00.000    needs to become 10:00 AM
2011-02-15 15:30:00.000    needs to become 3:30 PM
2011-02-15 17:30:00.000    needs to become 5:30 PM

我正在寻找在T-SQL中实现这一目标的最佳方法。

3 个答案:

答案 0 :(得分:10)

一种方法是:

转换为varchar,它将为您提供:

Select CONVERT(varchar, @dt, 100) -- where @dt is your date time

2011年2月15日下午3:30

随后,要删除日期,并从右边获取最多的7个字符,并添加TRIM以增加安全性,但可能不需要。

Select LTRIM(RIGHT(CONVERT(varchar, @dt, 100),7))

将在下午3:30给你

旁注:Denali使这更容易,没有更多魔术数字

答案 1 :(得分:1)

DateTime存储在内部表示中 - 没有关联的格式。当您需要显示DateTime时,请指定将DateTime转换为字符串所需的格式。

让应用程序决定格式化而不是SQL中的格式化会更好

有关详细信息,请参阅standardcustom日期和时间格式字符串。

答案 2 :(得分:1)

正如您在T-SQL中所要求的那样,您可能希望查看专门列出各种日期和时间格式的CAST and CONVERT语法。

例如:

select convert(varchar, getdate(), 100)

会给你:

Feb 3 2012 3:26PM