开发者社区 > 数据库 > 数据仓库 > 正文

云数据仓库ADB过滤问题请教一下

云数据仓库ADB adbmysql对date类型cast as date 之后,使用between and 过滤不包含边界,但是不使用cast as date 直接进行between and 过滤会包含边界的

展开
收起
嘟嘟嘟嘟嘟嘟 2024-07-10 11:06:10 55 0
1 条回答
写回答
取消 提交回答
  • 在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-开发者群”

    2024-07-10 12:59:48
    赞同 5 展开评论 打赏

阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。

相关产品

  • 云原生数据仓库 AnalyticDB PostgreSQL版
  • 相关电子书

    更多
    基于阿里云MaxCompute 构建企业云数据仓库CDW的最佳实践建议 立即下载
    PostgresChina2018_陶征霖_新一代数据仓库OushuDB架构剖析 立即下载
    MaxCompute数据仓库数据转换实践 立即下载