我在SQL Server中看到了许多与格式和date/time
转换相关的问题,但没有一个回答我的担忧(它没有重复)。 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
不幸的是,这个SQL Server版本还没有FORMAT
和FORMATDATETIME
函数。
使用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.
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,则需要更多信息
我没有测试过,因为我在手机上,但也许。现在测试并纠正:
STUFF(RIGHT(CONVERT(varchar(26),GETDATE(),109),14),9,4,' ')