需要将一个时间段使用sql语句按月拆分。
元数据类似如下:
2018-03-02   2018-06-02拆分为:
2018-03-02   2018-03-31
2018-04-01   2018-04-30
2018-05-01   2018-05-31
2018-06-01   2018-06-02

解决方案 »

  1.   

    SELECT dt1, dt2 FROM(
    SELECT
    @dt1 as dt1, 
    @dt1 := @dt1 - INTERVAL EXTRACT(DAY FROM @dt1) - 1 DAY + INTERVAL 1 MONTH,
    @dt := @dt1 - INTERVAL 1 DAY,
    CASE WHEN @dt1 < @dt2 THEN @dt ELSE  @dt2 END as dt2
    FROM( SELECT @dt1:=CAST('2018-03-02' as date), @dt2:=CAST('2018-06-02' as date) ) _x,
    information_schema.columns A
    WHERE @dt1 < @dt2
    ) A
      

  2.   

    mysql内部是如何实现这个语句的呢?
      

  3.   

    mysql内部是如何实现这个语句的呢?
    了解了,逐行查询实现的