sql - 将 TEXT 转换为日期('yyyy-mm-dd')格式(Postgresql)时输出不正确
问题描述
在我使用以下代码将列“生日”(表:动物)从 CHAR 转换为日期后,将显示年份不正确的日期。
这就是“生日”在 char 格式中的样子:
- 2019 年 1 月 18 日
- 02/05/2005
- 2013 年 5 月 6 日 ...
代码:
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-05-06...
似乎“2”在日期的 yyyy 部分被“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');
推荐阅读
- powershell - 从 cmd.exe 启动时写入主机不工作
- go - Helm Secret 在 helm secret 问题中连接两个值
- reactjs - React JS 中 Angular JS $transitions.onBefore 事件的替代方法是什么
- vue.js - 在 vue.js 中的 Select 2 中编辑时预选值
- c - CentOS8实时FIFO进程未收到XCPU信号
- javascript - Angular - 如何在不参考 hostView 的情况下删除动态组件
- validation - 在 Go Validator.v2 中处理嵌套结构
- android - 如何为安卓应用生成 TWILIO_SDK_STARTER_SERVER_URL
- node.js - Debian 自动运行服务 Systemd
- angular-material - 材料侧导航不关闭