PostgreSQL:如何优雅地使用单个 space 分隔 return 罗马日期?
PostgreSQL: How to return roman date with single space delimitation elegantly?
如果我使用标准方式接收罗马数字月份的日期...
SELECT to_char(DATE '2000 12 05', 'DD RM YYYY')
PostgreSQL returns 多间隔(1 到 4)定界日期:
"05 XII 2000"
"02 VIII 1976"
"02 V 1976"
我注意到 RM
总是 returns 5 个字符代表月份的所有可能性(从小:I
到大:VIII
)
这不是我所期望的。我想要返回单行距分隔日期。我已经提出了一个使用 regex_replace 的解决方案,这可能有点矫枉过正 (?)
SELECT regexp_replace(to_char(DATE '2000 12 05', 'DD RM YYYY'),
'(\d+)\s+([IVX]+)\s+(\d+)',E'\1 \2 \3','g');
哪个 returns 单倍行距日期结果:
"05 XII 2000"
"02 VIII 1976"
"02 V 1976"
有没有更优雅的方法来做到这一点? (...或者 post PostgreSQL 中的错误?)
只需添加 FM
:
FM suppresses leading zeroes and trailing blanks that would otherwise be added to make the output of a pattern be fixed-width.
SELECT to_char(DATE '2000 01 05', 'DD FMRM YYYY');
-- 05 I 2000
如果我使用标准方式接收罗马数字月份的日期...
SELECT to_char(DATE '2000 12 05', 'DD RM YYYY')
PostgreSQL returns 多间隔(1 到 4)定界日期:
"05 XII 2000"
"02 VIII 1976"
"02 V 1976"
我注意到 RM
总是 returns 5 个字符代表月份的所有可能性(从小:I
到大:VIII
)
这不是我所期望的。我想要返回单行距分隔日期。我已经提出了一个使用 regex_replace 的解决方案,这可能有点矫枉过正 (?)
SELECT regexp_replace(to_char(DATE '2000 12 05', 'DD RM YYYY'),
'(\d+)\s+([IVX]+)\s+(\d+)',E'\1 \2 \3','g');
哪个 returns 单倍行距日期结果:
"05 XII 2000"
"02 VIII 1976"
"02 V 1976"
有没有更优雅的方法来做到这一点? (...或者 post PostgreSQL 中的错误?)
只需添加 FM
:
FM suppresses leading zeroes and trailing blanks that would otherwise be added to make the output of a pattern be fixed-width.
SELECT to_char(DATE '2000 01 05', 'DD FMRM YYYY');
-- 05 I 2000