【问题标题】:Format a date stored as "text" to the pattern "mm-dd"将存储为“文本”的日期格式化为模式“mm-dd”
【发布时间】:2014-01-15 00:49:08
【问题描述】:

我想在提取时将text 数据类型更改为“mm-dd”。

该列包含一个日期,数据类型为text

原始数据:'Sat Aug 31 2013'。我希望这是'8-31'

【问题讨论】:

  • 永远不要将日期存储为字符串。您应该在继续之前修复您的数据模型。

标签: sql postgresql date type-conversion


【解决方案1】:

作为@a_horse commented,正确的解决方法是将您的列转换为date。虽然坚持你不幸的设计......

字符串Sat Aug 31 2013中的Sat是多余的。实际上,to_date() 在这种模式下会忽略它。检查三字母缩写的一般有效性,然后将其忽略。甚至可能是错误的一天。更快地先验地忽略它。 I quote the manual:

to_dateto_numberto_timestamp 中,跳过双引号字符串 字符串中包含的输入字符数,例如“XX” 跳过两个输入字符。

此外,要像您的示例 ('8-31') 建议的那样在输出中跳过前导零(和空格),请使用 FM modifier

SELECT to_char(to_date(date_col, '"XXX "Mon DD YYYY'),'FMMM-DD')
FROM   tbl

-> SQLfiddle demo.

【讨论】:

    【解决方案2】:
    select to_char(to_date(date_string_column_name, 'DY Mon DD YYYY'),'MM-YY')
    

    在这里您可以查看日期格式:Source

    【讨论】:

    • 我怎样才能使它适用于整个专栏。你能帮我吗
    • 包含日期字符串的列的名称是什么?
    猜你喜欢
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多