Postgresql中如何将日期转YYYYMMDD格式后与字符串拼接
问题结论
你写的SQL本身是合法可运行的,这个日期转格式后和字符串拼接的操作完全可以在PostgreSQL中实现。
原写法逻辑说明
PostgreSQL内置的TO_CHAR()函数支持将日期、时间戳类型的字段按你指定的格式模板转换为字符串,你用的'YYYYMMDD'模板完全符合要求,转换后得到的字符串再通过PostgreSQL的字符串连接运算符||和字符串类型的nsma1_ans字段拼接,逻辑完全正确。
可选优化建议(可根据业务场景选择)
- 如果
nsma1_dt字段可能存在NULL值,拼接后的整个结果会返回NULL,你可以用COALESCE函数给日期字段设置默认值兼容这类场景,示例:CASE WHEN multi_app_documentation.nsma1_code = 'ANESTART' THEN TO_CHAR(COALESCE(multi_app_documentation.nsma1_dt, '1970-01-01'::date), 'YYYYMMDD') || multi_app_documentation.nsma1_ans END AS "ANESTART" - 如果
nsma1_ans字段也可能为NULL,可以同样用COALESCE包裹该字段,设置空字符串为默认值,避免整个拼接结果为NULL:CASE WHEN multi_app_documentation.nsma1_code = 'ANESTART' THEN TO_CHAR(multi_app_documentation.nsma1_dt, 'YYYYMMDD') || COALESCE(multi_app_documentation.nsma1_ans, '') END AS "ANESTART" - 你当前用双引号包裹别名
"ANESTART"是正确写法,如果你的业务要求别名必须保留大写格式就可以继续保留该写法,如果不需要强制大写,也可以省略双引号直接写为AS anestart。
内容的提问来源于stack exchange,提问作者Perk8
相关产品推荐
相关产品推荐

