Sql 格式化存储为“的日期”;“文本”;“对模式”;“月日”;

Sql 格式化存储为“的日期”;“文本”;“对模式”;“月日”;,sql,postgresql,date,type-conversion,Sql,Postgresql,Date,Type Conversion,我想在提取时将文本数据类型更改为“mm-dd” 该列包含日期,数据类型为text 原始数据:“2013年8月31日星期六”。我希望这个是'8-31' select to_char(to_date(date_string_column_name, 'DY Mon DD YYYY'),'MM-YY') 在这里,您可以查看最新的格式设置:因为,正确的修复方法是将列转换为date。虽然你的设计很糟糕 字符串中的Sat 2013年8月31日是冗余的。实际上,在这个模式中忽略它。检查三个字母缩写的一般有效

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

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

原始数据:
“2013年8月31日星期六”
。我希望这个是
'8-31'

select to_char(to_date(date_string_column_name, 'DY Mon DD YYYY'),'MM-YY')
在这里,您可以查看最新的格式设置:

因为,正确的修复方法是将列转换为
date
。虽然你的设计很糟糕

字符串中的
Sat 2013年8月31日
是冗余的。实际上,在这个模式中忽略它。检查三个字母缩写的一般有效性,然后忽略它。甚至可能是错误的一天。提前忽略它会更快:

在〈代码〉至日期〈代码〉、〈代码〉至号码〈代码〉和〈代码〉至时间戳〈代码〉中,双引号字符串跳过 字符串中包含的输入字符数,例如“XX” 跳过两个输入字符

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


我如何使其适用于整个专栏。在这方面你能帮我吗?包含日期字符串的列的名称是什么?永远不要将日期存储为字符串。您应该在继续之前修复数据模型。
SELECT to_char(to_date(date_col, '"XXX "Mon DD YYYY'),'FMMM-DD')
FROM   tbl