SQL 服务器中的特定 time/hour 格式

Specific time/hour format in SQL Server

我在 SQL 服务器中看到许多与格式和 date/time 转换相关的问题,但 none 回答了我的问题(没有重复)。 For example.

执行这条语句时:

select 
    convert(varchar(20), cast('2018/03/05 18:00:00.000' as time), 100) as entryTime

我得到这个结果:

我希望输出为 06:00:00 p.m.

有没有办法得到这样的结果:06:00:00 p.m.?

环境: SQL Server 2008 R2

很遗憾,FORMATFORMATDATETIME 功能在此 SQL 服务器版本中尚不可用。

我还没有测试过这个,因为我在 phone 上,但也许。现已测试并更正:

STUFF(RIGHT(CONVERT(varchar(26),GETDATE(),109),14),9,4,' ')
SELECT SUBSTRING(CONVERT(VARCHAR(26), CAST('2018/03/05 18:00:00.000' as  DATETIME), 109), 12, 8) 
       + ' ' + 
       LOWER(SUBSTRING(CONVERT(VARCHAR(26), CAST('2018/03/05 18:00:00.000'  as DATETIME), 109), 25, 1))
       + '.' + 
       LOWER(SUBSTRING(CONVERT(VARCHAR(26), CAST('2018/03/05 18:00:00.000' as DATETIME), 109), 26, 1))
       + '.'

更新了关于前导零的更完整的解决方案如果您使用变量来测试它是否大于 10,则需要更多信息

使用 right、字符串连接和 replace 我设法避免多次使用该值以获得适当的结果:

SELECT  REPLACE(
            REPLACE(
                RIGHT(
                    '0000000000' + 
                        CONVERT(
                        varchar(10), 
                        cast('2018/03/05 18:00:00.000' as time(0)), 
                        109),
                10), 
            'PM', 
            ' p.m.'),
        'AM',
        ' a.m.') as entryTime

结果:

entryTime
06:00:00 p.m.