目前我正在使用此脚本从列中抽出时间:
(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
所以基本上我需要在任何时间结束时添加:00(始终为零),并在零和即将进入的AM或PM之间添加一个空格。
我不太擅长格式化,所以我遇到了这个问题。有什么建议? (我正在运行SQL Server 2008 R2)
答案 0 :(得分:2)
不试图重写你的表达,我只会STUFF中的':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')