背景

hive/mysql下使用sql中的between * and * 在不同数据类型下不一样。
1.int类型、float类型、string类型是包含头尾的。
2.时间类型分情况

  • 当数据库字段中存储的是yyyy-MM-dd格式,即date类型:
    用between and查询:
    参数yyyy-MM-dd格式时,包含头尾,相当于x>=y && x<=z.
  • 当是yyyy-MM-dd HH:mm:ss格式,即datetime类型:
    用between and查询:
    参数yyyy-MM-dd  HH:mm:ss格式时,包含头尾,x>=y && x<=z。
    参数yyyy-MM-dd格式时,只包含头,相当于x>=y && x<z(这里特殊)

避坑办法

使用大于等于和小于等于替代between * and * ,避免这个问题。

posted on 2023-02-23 20:22  白的枫叶  阅读(143)  评论(0)    收藏  举报