SQL Server中的特定时间/小时格式

问题描述 投票:0回答:3

我在SQL Server中看到了许多与格式和date/time转换相关的问题,但没有一个回答我的担忧(它没有重复)。 For example.

执行此语句时:

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

我得到这个结果:

enter image description here

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

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

环境:SQL Server 2008 R2

不幸的是,这个SQL Server版本还没有FORMATFORMATDATETIME函数。

sql-server datetime sql-server-2008-r2 type-conversion
3个回答
2
投票

使用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.

1
投票
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,则需要更多信息


1
投票

我没有测试过,因为我在手机上,但也许。现在测试并纠正:

STUFF(RIGHT(CONVERT(varchar(26),GETDATE(),109),14),9,4,' ')
© www.soinside.com 2019 - 2024. All rights reserved.