PostgreSQL中使用CAST将varchar列转为timestamp支持哪些格式?
PostgreSQL中CAST(varchar AS timestamp)支持的时间格式查询方法
1. 查看当前数据库的日期时间格式配置
PostgreSQL的隐式转换(比如CAST(varchar_col AS timestamp))受DateStyle参数影响,你可以直接查询这个参数的值,了解当前默认支持的格式倾向:
-- 查看当前DateStyle设置 SHOW DateStyle; -- 或者用SELECT语句查询 SELECT current_setting('DateStyle');
返回结果类似ISO, MDY,表示默认支持ISO标准格式(如yyyy-mm-dd hh:mi:ss),同时支持月-日-年(MDY)格式(如05/20/2024)。
2. 直接测试特定格式是否兼容
最简单的方式是直接执行CAST语句测试目标格式:
-- 测试纯数字格式yyyymmdd SELECT CAST('20240520' AS timestamp); -- 测试带分隔符的标准格式 SELECT CAST('2024-05-20 14:30:00' AS timestamp);
如果语句能正常返回时间戳结果,说明该格式被支持;若抛出invalid input syntax for type timestamp错误,则表示不支持。
3. 常见支持的时间格式列举
PostgreSQL默认支持大部分主流时间格式,包括但不限于:
- ISO标准格式:
yyyy-mm-dd、yyyy-mm-dd hh:mi:ss、yyyy-mm-ddThh:mi:ss(带T分隔符) - 纯数字紧凑格式:
yyyymmdd、yyyymmddhhmi、yyyymmddhhmiss - 斜杠/点分隔格式:
yyyy/mm/dd、dd.mm.yyyy(部分依赖DateStyle配置) - 英文月份格式:
Mon dd, yyyy(如May 20, 2024)、Month dd, yyyy hh:mi(如May 20, 2024 14:30)
4. 处理非默认支持的格式
如果目标格式不在默认支持范围内,不要硬用CAST,改用TO_TIMESTAMP函数显式指定格式字符串,再转换为timestamp:
-- 处理日-月-年格式 SELECT TO_TIMESTAMP('20-05-2024', 'DD-MM-YYYY')::timestamp; -- 处理带中文月份的格式 SELECT TO_TIMESTAMP('2024年05月20日', 'YYYY年MM月DD日')::timestamp;
内容的提问来源于stack exchange,提问作者tooptoop4
相关产品推荐
相关产品推荐

