使用以下代码将"出生日期"列(表:动物(从CHAR转换为Date后,将显示年份不正确的日期。
这就是"生日"在字符格式中的样子:
- 2019年1月18日
- 2005年5月2日
- 2013年6月5日
代码:
ALTER TABLE animals ALTER COLUMN birthdate TYPE DATE
using to_date(birthdate, 'YYYY-MM-DD');
我得到的输出是这样的:
- 0019-01-18
- 0005-02-05
- 0013-05-06
应该是:
- 2019-01-18
- 2005-02-05
- 2013年5月6日
在日期的yyyy部分,"2"似乎被"0"取代。这是不正确的,你知道为什么会这样吗?我想要的格式是"yyyy-mm-dd"。
谢谢你的帮助。
我假设birthday
的初始数据类型是文本。在这种情况下,您的格式字符串YYYY-MM-DD
与数据格式不匹配。应该是MM/DD/YYYY
。
ALTER TABLE animals ALTER COLUMN birthdate TYPE DATE
using to_date(birthdate, 'MM/DD/YYYY');
请注意,一旦birthdate
的类型更改为date
(或者它是date
,根本不需要alter table
(,它就不再有格式了。您可以使用to_char
对其进行格式化或呈现。
select to_char(birthdate, 'YYYY-MM-DD');
您需要将列类型转换为最新类型。请尝试以下查询。
ALTER TABLE animals ALTER birthdate type date
using (birthdate::date)