Postgresql:日期格式和本地语言输出[英] Postgresql: date format and local language output

本文是小编为大家收集整理的关于Postgresql:日期格式和本地语言输出的处理方法,想解了Postgresql:日期格式和本地语言输出的问题怎么解决?Postgresql:日期格式和本地语言输出问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我对 postgresql 有两个问题.第一个是我必须以特定格式转换日期,例如:2016 年 11 月 4 日星期五

SELECT to_char(tstamp, 'Day DD month YYYY') FROM ...

结果如下:https://i.stack.imgur.com/RjNnm.png

乍一看 tstamp 表消失了,字符串中还有更多空间:

friday....04.November..2016

*十六进制编码

第二个是我必须将其转换为一种语言格式,例如意大利语:"Venerdì 04 Novembre 2016".

谢谢你的帮助

推荐答案

关于第一个问题:额外的空格是因为 month 和 Day 模式是:

<块引用>

空白填充到 9 个字符

https://www.postgresql.org/docs/9.6/static/functions-formatting.html

所以,如果你想删除这些空格,你可以试试这样:

 select trim(to_char(localtimestamp(0), 'Day'))||to_char(localtimestamp(0), ' DD ')||trim(to_char(localtimestamp(0), 'month'))||to_char(localtimestamp(0), ' YYYY')

--

关于意大利语,可能还有其他方法,但这也应该有效.您可以硬编码意大利月份和日期名称并使用 case 表达式"翻译"它们,如下所示:

select 
    case 
        when trim(to_char(tstamp, 'Day')) = 'Monday' then 'Monday_in_italian' 
        when trim(to_char(tstamp, 'Day')) = 'Tuesday' then 'Tuesday_in_italian'
        when trim(to_char(tstamp, 'Day')) = 'Wednesday' then 'Wednesday_in_italian' 
        -- another days here
    end||
    to_char(tstamp, ' DD ')||
    case 
        when trim(to_char(tstamp, 'month')) = 'january' then 'January_in_italian'
        when trim(to_char(tstamp, 'month')) = 'february' then 'February_in_italian'
        -- another months here
    end||
    to_char(tstamp, ' YYYY')
    as tstamp 
    from your_table

请注意,如果您想在任何时候正确地工作,您应该将所有 7 天和所有 12 个月的名称放在大小写表达式中.

或者更好的是,在 case 语句中,您可以使用 D 模式来确定日期和 MM 模式来确定月份.如果你想查看可用的模式列表,你可以点击我在上面发布的链接.

本文地址:https://www.itbaoku.cn/post/1763953.html