gpt4 book ai didi

postgresql - 如何在不知道日期格式的情况下将日期字符串转换为时间戳

转载 作者:行者123 更新时间:2023-11-29 11:13:03 25 4
gpt4 key购买 nike

我正在尝试编写查询以将值插入到没有时区数据的 timestamp 类型字段中。该值来自 CSV 文件。

我使用的版本是 PostgreSQL 8.1.21

CSV 文件上传由客户端完成,它有一个日期列。日期有时以 '28-Sep-13' 格式出现,有时以 '28/09/2013' 格式出现。

我尝试使用以下方法将字符串转换为时间戳:str_date::时间戳

如果 str_date 类似于 '28-Sep-13',则此操作正常,但如果传入日期的格式为 '28,则此操作无效/09/2013',出现这个错误时:

ERROR: date/time field value out of range: "28/09/2013"  
HINT: Perhaps you need a different "datestyle" setting

基本上,客户端会不断更改上传的 CSV 文件中的日期格式。
有没有办法根据实际格式将日期字符串转换为时间戳?

最佳答案

您需要将日期样式设置为“ISO, DMY”。它默认设置为“ISO, MDY”,并且会导致您的示例失败:

> show datestyle;

DateStyle
-----------
ISO, MDY
(1 row)

> select '28-Sep-13'::date;
date
------------
2013-09-28
(1 row)

> select '28/09/2013'::date;
ERROR: date/time field value out of range: "28/09/2013"
LINE 1: select '28/09/2013'::date;
^
HINT: Perhaps you need a different "datestyle" setting.

> set datestyle = 'ISO, DMY';
SET

> select '28-Sep-13'::date;
date
------------
2013-09-28
(1 row)

> select '28/09/2013'::date;
date
------------
2013-09-28
(1 row)

(在 PostgreSQL 9.1 中完成的示例,但 DateStyle 设置和相关行为是古老的,因此应该可以正常工作)

关于postgresql - 如何在不知道日期格式的情况下将日期字符串转换为时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8130594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com