在输入条件的时候是精确到天例如 2018-02-05 2018-03-06
在查询的时候是精确到月份  就是说我输入上面的日期但是查询的时候是查两个月的数据(2,3月份)
sql语句这么写 字段类型是datetime

解决方案 »

  1.   

    SELECT *
    FROM 表
    WHERE DATEDIFF(MONTH, '2018-02-05', 时间字段) = 0
          OR DATEDIFF(MONTH, '2018-03-06', 时间字段) = 0;
      

  2.   

    --追求效率应这样写
    --加索引
    create index ix_表_时间字段 on 表(时间字段);--查询
    SELECT *
    FROM 表
    WHERE  时间字段>'2018-02-01' and 时间字段<'2018-03-01'
    union
    SELECT *
    FROM 表
    WHERE  时间字段>'2018-03-01' and 时间字段<'2018-04-01'
      

  3.   

    像这样的问题,一般是如下几种解决方案:1.在表上增加一个期间的冗余列,可以为计算列,其值为yyyy-mm或者YYYYMM,在这个字段上创建索引
                                                                    2.在一个月的数据写入完成后做结转,按期间yyyymm汇总,写入到期间汇总表
                                                                    3.将年月条件参数化,然后转化为日期范围,像2楼那样查询
      

  4.   

    select * from 表 where month(时间字段) >=month(时间变量1) and  month(时间字段) <=month(时间变量2)