1

目前我正在使用此脚本从列中提取时间:

    (RIGHT('0' + ltrim(RIGHT(convert(varchar,cast(SUBSTRING(A.DocSign, CHARINDEX('^', A.DocSign) +1, 19) as datetime), 100), 7)), 7))

这返回的是一个格式为上午 10:34 的时间 - 它还在此代码中将军用时间转换为标准时间,并将其附加到我从日期、姓氏等列中提取的其他项目中。我需要时间显示为 10:54:00 AM

所以基本上我需要在任何时间的末尾添加 :00 (总是零),并在零和即将到来的 AM 或 PM 之间添加一个空格。

我不太擅长格式化,所以我遇到了这个问题。有什么建议么?(我正在运行 SQL Server 2008 R2)

4

1 回答 1

2

在不尝试重写您的表达式的情况下,我只需将 ':00 '填入即可。

STUFF(
   (RIGHT('0' + ltrim(RIGHT(convert(varchar,cast(SUBSTRING(
    A.DocSign, CHARINDEX('^', A.DocSign) +1, 19) as datetime), 100), 7)), 7)),
6,0,':00 ')

另一种方法是用嵌入的零替换PM/ AM,即

REPLACE(REPLACE(
   (RIGHT('0' + ltrim(RIGHT(convert(varchar,cast(SUBSTRING(
    A.DocSign, CHARINDEX('^', A.DocSign) +1, 19) as datetime), 100), 7)), 7)),
'PM', ':00 PM'),'AM', ':00 AM')
于 2012-10-18T18:01:25.710 回答