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
很遗憾,FORMAT
和 FORMATDATETIME
功能在此 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.
我在 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
很遗憾,FORMAT
和 FORMATDATETIME
功能在此 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.