将文本转换为日期("yyyy-mm-dd")格式(Postgresql)时输出不正确



使用以下代码将"出生日期"列(表:动物(从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)

最新更新