SQL中::类型转换语法解析及相关官方文档查询求助
问题
我用以下SQL计算2021-01-02当日的付款总额:
SELECT SUM(PAYMENT) AS TOT_PAYMENTS FROM PAYMENTS WHERE (PAY_DATE::timestamp)::date = '2021-01-02'
已知PAY_DATE字段的数据类型为TIMESTAMP,我通过其他途径找到用::语法在过滤时将其转换为DATE类型的方法,且该方法已生效。现在想咨询:
- 该类型转换语法的官方文档在哪里可以找到?
- 目前我仅能找到CAST和PARSE方法的相关资料,能否解释此语法的原理?
回答
语法原理
这个::是PostgreSQL(以及部分兼容它的数据库)专属的类型转换简写操作符,和标准SQL里的CAST(表达式 AS 目标类型)功能完全等价。
比如你写的PAY_DATE::date,就等同于CAST(PAY_DATE AS date),作用是把TIMESTAMP类型的字段转换成DATE类型,只保留日期部分。另外你代码里的(PAY_DATE::timestamp)::date有点多余——因为PAY_DATE本身就是TIMESTAMP类型,直接写PAY_DATE::date就足够完成转换了。
官方文档位置
在PostgreSQL的官方文档中,这个语法归在类型转换相关章节里,具体是SQL语法板块下的类型转换部分,文档会同时说明::操作符和CAST这两种写法,你直接搜索“Type Casting”(英文文档)或者“类型转换”(中文文档)就能找到对应的内容。
内容的提问来源于stack exchange,提问作者Kaido
相关产品推荐
相关产品推荐

