我一直在使用SQL Server 2012中提供的format()函数字符串文字,效果很好。不幸的是,我找不到任何好的资源来帮助我提出格式化日期时间文字的上午/下午。我正在使用此代码:
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
当然,我希望它看起来像这样:
2013年11月20日美国东部时间下午1:28
关于代码的注意事项:我使用日期范围来正确显示美国东海岸的夏令时和标准时间。
谢谢!
答案 0 :(得分:4)
您的格式字符串中缺少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')
有关详细信息,请参阅Custom Date and Time Format Strings页面。