云数据仓库ADB adbmysql对date类型cast as date 之后,使用between and 过滤不包含边界,但是不使用cast as date 直接进行between and 过滤会包含边界的
在ADB MySQL中,当你对date类型进行CAST AS DATE操作之后使用BETWEEN AND进行过滤时,由于CAST AS DATE会去除掉时间部分,只保留日期,所以实际上过滤条件是基于完整的日期,不包含任何时间部分,因此可能会出现不包含边界的情况。这是因为如果边界值有具体时间(即使为00:00:00),经过转换后只保留日期,比较时自然不会匹配到带有具体时间的边界记录。
而不使用CAST AS DATE,直接在BETWEEN AND中使用带有时间的date类型进行过滤时,因为考虑了时间部分,如果边界值精确到日期且包含从00:00:00开始,则这个日期的所有时刻都会被包括在内,即会包含边界。
简单来说,CAST AS DATE操作改变了值的比较方式,使其基于纯粹的日期比较,可能导致边界处理上的不同。具体行为还需结合实际SQL查询和数据情况来分析。此回答整理自钉群“云数据仓库ADB-开发者群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。