首页 > 数据库 >写一条sql列出开始日期和结束日期之间的每一天(包括起止日期)

写一条sql列出开始日期和结束日期之间的每一天(包括起止日期)

时间:2023-03-26 10:06:15浏览次数:29  
标签:03 seq UNION 起止日期 日期 sql 2023 DATE SELECT

给定一个开始日期和结束日期,写个sql把中间的每天都查出来(包括开始和结束日期)。

给定开始时间是2023-03-12,结束时间是2023-03-22,sql如下:

SELECT DATE_ADD('2023-03-12', INTERVAL seq DAY) AS `day` 
FROM (
    SELECT 0 seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL
    SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10
) t
WHERE DATE_ADD('2023-03-12', INTERVAL seq DAY) <= '2023-03-22'

查询结果

day
2023-03-12
2023-03-13
2023-03-14
2023-03-15
2023-03-16
2023-03-17
2023-03-18
2023-03-19
2023-03-20
2023-03-21
2023-03-22

如果要动态处理,可以使用mybatis的foreach标签处理该sql

参数dateStart、dateEnd、numList分别代表开始时间、结束时间、差值数集合

SELECT DATE_ADD(DATE_FORMAT(#{dateStart},'%Y-%m-%d'), INTERVAL seq DAY) AS `day`
FROM (
    SELECT 0 seq UNION ALL
    <foreach collection="numList" item="numItem" separator=" UNION ALL " open=" " close=" ">
        SELECT #{numItem}
    </foreach>
) 
WHERE DATE_ADD(DATE_FORMAT(#{dateStart},'%Y-%m-%d'), INTERVAL seq DAY) <= DATE_FORMAT(#{dateEnd},'%Y-%m-%d')

 



标签:03,seq,UNION,起止日期,日期,sql,2023,DATE,SELECT
From: https://blog.51cto.com/u_12004792/6149801

相关文章

  • postgresql signal 5生成core分析
    postgresqlsignal5生成core,如下:[zjh@hs-10-20-30-193data]$gdblightdbcore.49666GNUgdb(GDB)RedHatEnterpriseLinux7.6.1-120.el7Copyright(C)2013Free......
  • Caused by: java.sql.SQLException: Parameter index out of range (2 > number of pa
    一、问题背景在xml配置中自定义了sql语句二、报错截图如下三、我的项目配置如下四、分析问题五、问题原因在xml中自定义sql语句时,里面不能有注释过得sql六、解决......
  • P2 MySQL三层结构
    P2MySQL三层结构所谓安装MySQL数据库,就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库。DBMS(databasemanagesystem)一个数据库可以创建多个......
  • 用VIP和半同步搭建MySQL 一主一从架构
    搭建MySQL一主一从架构并使用VIP和半同步复制:安装MySQL主库和从库。设置主库的my.cnf文件:[mysqld]server_id=1#主库需要设置不同的ID,并确保唯一log-bin=mysql-......
  • MySQL 过程式编程,把一些间隔为1天的区间拼接起来
    题目地址https://www.hackerrank.com/challenges/sql-projects/problem?isFullScreen=true/*Enteryourqueryhere.*/--orderbyconsec_daysasc,task_start_date......
  • MySQL order by limit 分页数据重复或丢失问题说明
    mysql中当orderby与limit同时使用,数据可能出现重复或丢失问题使用了下面的方法发现也没什么问题Db::name('users')->where(['is_disabled'=>0])->field('id,nickn......
  • mysql公共字段填充
    在实体类的属性上打@TableField注解,并在写明何时自动填充。 按照框架要求编写元数据对象处理器,在此类中统一为公共字段赋值,此类需要实现MetaObjectHandler接口1/**......
  • SQL - 子查询
             #单行子查询#1.查询工资大于149号员工工资的员工信息SELECTe.last_name,e.salaryFROMemployeeseWHEREe.salary>(SELE......
  • SQL优化总结
    一、查询SQL尽量不要使用select*,而是具体字段二、避免在where子句中使用or来连接条件三、尽量使用数值替代字符串类型四、使用varchar代替char五、技术延伸,char与varchar......
  • mysql
    数据库简述StructureQueryLanguage(结构化查询语言)简称SQL登录数据库与用户操作cmd打开数据库 添加用户 删除用户 查看所有用户......