PostgreSQL中如何将ISO 8601格式时间转换为标准datetime格式?
PostgreSQL 时间格式转换:从ISO 8601到YYYY-MM-DD HH:MI:SS
针对输入格式2022-11-28T12:18:46.534919023Z(标准ISO 8601带UTC时区标记),要转换为2022-11-28 12:18:46格式插入datetime类型字段,PostgreSQL有几种简洁实现方式:
方法1:直接类型转换截断毫秒
PostgreSQL可自动识别ISO 8601格式,通过两步类型转换直接截断毫秒:
-- 转换为不带时区、无毫秒的timestamp(对应datetime字段类型) SELECT '2022-11-28T12:18:46.534919023Z'::timestamptz::timestamp(0);
timestamptz先解析带时区的输入字符串,timestamp(0)将其转换为不带时区且保留0位毫秒的时间类型,结果就是2022-11-28 12:18:46,可直接插入datetime字段。
方法2:显式指定格式解析
如果需要明确匹配格式规则,用TO_TIMESTAMP函数:
SELECT TO_TIMESTAMP('2022-11-28T12:18:46.534919023Z', 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"')::timestamp(0);
YYYY-MM-DD"T"HH24:MI:SS.US"Z"精准匹配输入格式,US对应微秒部分,"Z"匹配末尾时区标记- 同样通过
::timestamp(0)截断毫秒
插入表的实际写法
在INSERT语句中直接套用转换逻辑即可:
INSERT INTO your_table (datetime_column) VALUES ('2022-11-28T12:18:46.534919023Z'::timestamptz::timestamp(0));
内容的提问来源于stack exchange,提问作者Oscar
相关产品推荐
相关产品推荐

