mysql生成连续数字或时间

  1. 连续时间mysql代码
select DATE_FORMAT(date_add(NOW(),interval @i:=@i+1 MONTH),'%Y-%m') as date
        from (
        select 1
        union all select 1
		union all select 1
        ) as tmp,
        (select @i:= -1) t

在这里插入图片描述
分析:
1.1 这里演示月份,可以将月份改为天
1.2 select 1 union all select 1 union all select 1 union all select 1 是为了生成一个一列N行的虚拟表,然后由表t与其做笛卡尔积,这样根据N行会生成n行的一个时间序列。

  1. 连续时间mybatis代码
select DATE_FORMAT(date_add(#{startDate},interval @i:=@i+1 MONTH),'%Y-%m') as date
        from (
        select 1
        <foreach item="index" collection="countArr">
            union all select 1
        </foreach>
        ) as tmp,
        (select @i:= -1) t
        order by date desc

分析:
2.1 startDate 起始时间
2.2 countArr 一个起始时间和结束时间差的集合 例:如下代码

public String[] calcBetweenDate(String start, String end) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM");
        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();
        try {
            startDate.setTime(df.parse(start));
            endDate.setTime(df.parse(end));
        } catch (Exception e) {
            System.out.println("日期转换出错");
        }
        int count = endDate.get(Calendar.MONTH) - startDate.get(Calendar.MONTH);
        String[] countArr = new String[count];
        return countArr;
    }
  1. 连续数字mysql代码
SELECT @i:=@i+1 as number from 
			(SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 ) tmp, 
			--(SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 ) tmp,
			(SELECT @i:=0) t 

这里是引用
分析:
3.1:代码中注释了一个,如果有2个就是乘法 即:3*3=9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值