【发布时间】:2014-01-15 00:49:08
【问题描述】:
我想在提取时将text 数据类型更改为“mm-dd”。
该列包含一个日期,数据类型为text。
原始数据:'Sat Aug 31 2013'。我希望这是'8-31'。
【问题讨论】:
-
永远不要将日期存储为字符串。您应该在继续之前修复您的数据模型。
标签: sql postgresql date type-conversion
我想在提取时将text 数据类型更改为“mm-dd”。
该列包含一个日期,数据类型为text。
原始数据:'Sat Aug 31 2013'。我希望这是'8-31'。
【问题讨论】:
标签: sql postgresql date type-conversion
作为@a_horse commented,正确的解决方法是将您的列转换为date。虽然坚持你不幸的设计......
字符串Sat Aug 31 2013中的Sat是多余的。实际上,to_date() 在这种模式下会忽略它。检查三字母缩写的一般有效性,然后将其忽略。甚至可能是错误的一天。更快地先验地忽略它。 I quote the manual:
在
to_date、to_number和to_timestamp中,跳过双引号字符串 字符串中包含的输入字符数,例如“XX” 跳过两个输入字符。
此外,要像您的示例 ('8-31') 建议的那样在输出中跳过前导零(和空格),请使用 FM modifier。
SELECT to_char(to_date(date_col, '"XXX "Mon DD YYYY'),'FMMM-DD')
FROM tbl
【讨论】:
select to_char(to_date(date_string_column_name, 'DY Mon DD YYYY'),'MM-YY')
在这里您可以查看日期格式:Source
【讨论】: