首页 > 解决方案 > 将 TEXT 转换为日期('yyyy-mm-dd')格式(Postgresql)时输出不正确

问题描述

在我使用以下代码将列“生日”(表:动物)从 CHAR 转换为日期后,将显示年份不正确的日期。

这就是“生日”在 char 格式中的样子:

代码:

ALTER TABLE animals ALTER COLUMN birthdate TYPE DATE 
using to_date(birthdate, 'YYYY-MM-DD');

我得到的输出是这样的:

它应该是:

似乎“2”在日期的 yyyy 部分被“0”替换。这是不正确的,知道为什么会这样吗?我想要的格式是'yyyy-mm-dd'。

谢谢您的帮助。

标签: sqlpostgresqldate

解决方案


我假设的初始数据类型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');

推荐阅读