sql - Postgres - 将日期从一种格式转换为另一种格式
问题描述
问题本身被问了多次,但我碰巧遇到了一个我无法解决的问题。
我有一个包含格式日期的表格:Tue Jan 29 15:24:20 CET 2019
根据文档中的字段,它代表Dy Mon DD HH24:MI:SS TZ YYYY
.
updated
表中的列是类型text
我想更新每一行并将此日期转换为YYYY-MM-DD HH24:MI:SS
但首先我想将日期从一种格式转换为另一种格式但是我得到了 sql 错误:
select to_char(to_date(updated, 'Dy Mon DD HH24:MI:SS TZ YYYY'), 'YYYY-MM-DD HH24:MI:SS') from audit where id =1267;
ERROR: formatting field "TZ" is only supported in to_char
谁能给我一个提示如何做到这一点?
解决方案
您的代码的一个问题是只to_date
返回一个date
(没有时间)。to_timestamp
会更合适。
但即便如此,文档也说:
TZ
- 大写时区缩写(仅支持to_char
)
但文档还说:
提示:
to_timestamp
并且to_date
存在用于处理无法通过简单转换转换的输入格式。对于大多数标准日期/时间格式,只需将源字符串转换为所需的数据类型即可,而且要容易得多。
所以你应该做的是使用演员表:
cast(updated as timestamp with time zone)
或者,如果您想忽略时区:
cast(updated as timestamp)
推荐阅读
- javascript - 如何在 Angular 6 中获取本地系统的 IP 地址?
- python-3.x - 为什么我的 subprocess.call(command) 代码不向 txt 输出文件写入任何内容?
- c++ - 如何添加到已经存储在集合中的集合?
- r - 在 dplyr mutate 中使用 sum 函数
- jquery - 如何检查 CKEditor 字段的唯一性?
- python - 如何解决“AttributeError:模块'linecache'没有属性'checkcache'”的问题
- javascript - 需要使用 JavaScript 将 JSON 格式转换为另一种 json 格式
- r - 尝试将函数逐行应用于数据框以创建新列
- javascript - 如何在不将 onload 事件放在 body 标签中的情况下提交表单
- python - Python:如何从嵌套的内部 for 循环增加外部 for 循环