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

Mat*_*att 4 t-sql sql-server

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

例子:

2011-02-15 10:00:00.000
2011-02-15 15:30:00.000
2011-02-15 17:30:00.000
Run Code Online (Sandbox Code Playgroud)

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

所以

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
Run Code Online (Sandbox Code Playgroud)

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

kd7*_*kd7 11

一种方法是:

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

Select CONVERT(varchar, @dt, 100) -- where @dt is your date time
Run Code Online (Sandbox Code Playgroud)

2011年2月15日下午3:30

随后,要删除日期,并从右侧获得7个字符,这是最多的,并且为了额外的安全性而添加TRIM,但可能不需要.

Select LTRIM(RIGHT(CONVERT(varchar, @dt, 100),7))
Run Code Online (Sandbox Code Playgroud)

会在下午3:30给你

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