使用TO_timestamp或CAST可将字符串转为时间类型。1. TO_TIMESTAMP(‘字符串’,’格式’)按指定格式解析为TIMESTAMP,如含日期时间或仅时间;2. 结合::TIME提取纯时间部分;3. 标准格式可用CAST直接转换;4. 注意格式匹配,避免报错。

在 postgresql 中,将字符串转换为时间类型可以通过 TO_TIMESTAMP 或 CAST 实现,具体取决于你想要的结果是包含日期的时间戳还是仅时间部分。
1. 使用 TO_TIMESTAMP 函数
该函数用于将字符串按指定格式解析为 TIMESTAMP 类型。你需要提供字符串和对应的格式模板。
语法:
TO_TIMESTAMP(‘字符串’, ‘格式’)
例如:
- 将 ‘2024-07-05 14:30:25’ 转为时间戳:
select TO_TIMESTAMP(‘2024-07-05 14:30:25’, ‘yyYY-MM-DD HH24:MI:SS’); - 如果字符串只有时间部分,比如 ’14:30:25’,可以这样写:
SELECT TO_TIMESTAMP(’14:30:25′, ‘HH24:MI:SS’);
注意:此时日期部分默认为当前系统的“基准日”(通常是 2024-01-01 或类似)。
2. 提取时间(TIME 类型)
如果你只需要时间部分(不带日期),可以在转换后使用 ::TIME 强制转换类型。
示例:
SELECT TO_TIMESTAMP(’14:30:25′, ‘HH24:MI:SS’)::TIME;
结果为:14:30:25(纯 TIME 类型)
3. 使用 CAST 简化转换(适用于标准格式)
如果字符串符合标准时间或时间戳格式,可以直接用 CAST。
- 标准时间字符串:
SELECT CAST(’14:30:25′ AS TIME); - 标准时间戳字符串:
SELECT CAST(‘2024-07-05 14:30:25’ AS TIMESTAMP);
4. 常见格式说明
- YYYY:四位年份
- MM:两位月份
- DD:两位日期
- HH24:24小时制小时
- MI:分钟
- SS:秒
确保字符串与格式完全匹配,否则会报错。如有毫秒,可加 MS 或使用 TO_TIMESTAMP 支持小数秒的变体。
基本上就这些。根据你的数据格式选择合适的方法即可。