TSQL 2012使用AM和PM格式化字符串文字



我一直在使用SQL Server 2012中提供的format()函数字符串文字,效果非常好。不幸的是,我找不到任何好的资源来帮助我调出格式化日期-时间文字的AM/PM。我使用的是这个代码:

SELECT
CASE 
    WHEN CONVERT(DATE, GETDATE()) BETWEEN '2013-03-10' AND '2013-11-03'
        OR CONVERT(DATE, GETDATE()) BETWEEN '2014-03-09' AND '2014-11-02'
        OR CONVERT(DATE, GETDATE()) BETWEEN '2015-03-08' AND '2015-11-01'
        OR CONVERT(DATE, GETDATE()) BETWEEN '2016-03-13' AND '2016-11-06'
        OR CONVERT(DATE, GETDATE()) BETWEEN '2017-03-12' AND '2017-11-05'
        OR CONVERT(DATE, GETDATE()) BETWEEN '2018-03-11' AND '2018-11-04'
        OR CONVERT(DATE, GETDATE()) BETWEEN '2019-03-10' AND '2019-11-03'
        THEN format(dateadd(hh, -4, GETDATE()), 'MMMM d, yyyy h:mm EDT')
    ELSE format(dateadd(hh, -5, GETDATE()), 'MMMM d, yyyy h:mm EST')
END as process_finished

要获得此格式:

2013年11月20日1:28 EST

当然,我希望它看起来像这样:

2013年11月20日美国东部时间下午1:28

代码注释:我使用日期范围来正确显示美国东海岸的夏令时和标准时间。

谢谢!

您的格式字符串中缺少AM/PM指示符tt

    THEN format(dateadd(hh, -4, GETDATE()), 'MMMM d, yyyy h:mmtt EDT')
ELSE format(dateadd(hh, -5, GETDATE()), 'MMMM d, yyyy h:mmtt EST')

有关详细信息,请参阅"自定义日期和时间格式字符串"页面。

最新更新