需要将一个时间段使用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
元数据类似如下:
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
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
了解了,逐行查询实现的