在做项目任务时,需要将一个日期范围转换为日期表。 
例如:日期范围(2017年01月21日~2017年02月20日)、转换成一日为单位的日期表,如下。 
2017-01-21 
2017-01-22 
2017-01-23 
…… 
2017-02-19 
2017-02-20

直接上SQL,查询结果如上:

SET LANGUAGE N'Simplified Chinese'
DECLARE @StartDate NVARCHAR(MAX) = '2017-01-21'
,@EndDate NVARCHAR(MAX) = '2017-02-21'
;
WITH TEMP
AS
(SELECT CAST(@StartDate AS DATE) AS DT
UNION ALL
SELECT CAST(DATEADD(DAY,1,DT) AS DATE) FROM TEMP WHERE DATEADD(DAY,1,DT)<=@EndDate
)
SELECT * FROM TEMP
;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

另外,生成数字序列1到100的方法,如下:

with t
as
(select 1 as dt
union all
select dt+1 from t
where dt+1<=100
)
select dt from t option(maxrecursion 0)
;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

更简单的方法,如下:

select number from master..spt_values where type='p' and number between 1 and 100
该函数最大值number<=2015

sql server递归日期的更多相关文章

  1. 【MSSQL】SQL Server的日期和时间类型

    参考:SQL Server的日期和时间类型 SQL Server使用 Date 表示日期,time表示时间,使用datetime和datetime2表示日期和时间. 1.秒的精度 秒的精度是指TSQL ...

  2. Sql Server中日期时间格式化为字符串输出

    在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...

  3. SQL Server的日期和时间类型

    Sql Server使用 Date 表示日期,time表示时间,使用datetime和datetime2表示日期和时间. 1,秒的精度是指使用多少位小数表示秒 DateTime数据类型秒的精度是3,D ...

  4. [转]sql server 数据库日期格式化函数

    转至:http://www.cnblogs.com/hantianwei/archive/2009/12/03/1616148.html 0   或   100   (*)     默认值   mon ...

  5. SQL SERVER 中日期格式化,及GETDATE()、CONVERT()函数使用说明

    1. date和datetime类型的区别 date是SQL Server 2008新引进的数据类型.它表示一个日期,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日.只需 ...

  6. Sql Server 常用日期格式

    SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() 2004-09-12 11:06:08.17 ...

  7. SQL Server 递归

    SQL Server 没有类似于Oracle START WITH NAME='xx' CONNECT BY PRIOR ID=PARENT_ID这样的语句,但是可以通过自定义标准函数+With语句实 ...

  8. sql server 查询日期中的常用语句, 例如本周第一天, 年内的第几周,有用

    --本周第一天    SELECT DATEADD(Day,1-(DATEPART(Weekday,getdate())+@@DATEFIRST-1)%7,getdate())   --or    s ...

  9. SQL Server 常用日期查询语句

    --本月月初select  dateadd(mm,datediff(mm,0,getdate()),0) --本月月末select  DATEADD(DD,-1,DATEADD(MONTH,1+DAT ...

随机推荐

  1. linux系统抓包命令

    IP地址抓包:tcpdump -i any host 1.1.1.2 -n 端口抓包: tcpdump -i any port 6789 -n wireshak工具抓包:tcp.port == 678 ...

  2. 客户端远程连接linux下mysql数据库授权

    mysql默认状态是只支持localhost连接,这样远程服务器都输入IP地址去连接你的服务器是不可以的,下面我来介绍怎么让mysql允许远程连接配置方法,有需要的朋友可参考.   方法一,直接利用p ...

  3. Mybatis的resultMap返回map

    <resultMap type="Map" id="bankMaintainMap"> <result column="bank_n ...

  4. Android自定义字体

    1.在assets中创建文件夹fonts,放入字体文件.ttf 2.使用实例: TextView tv= (TextView)findViewById(R.id.tv); Typeface tf =  ...

  5. 【架构师之路】 LVS+Keepalived实现高可用负载均衡

    一.原理        1.概要介绍        如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状态, ...

  6. Win8交互UX——触摸板交互

    针对触摸输入优化 Window 应用商店应用设计,并在默认情况下获得触摸板支持. 设计用户可以通过触摸板交互的 Windows 应用商店应用. 触摸板结合间接的多点触控输入和指针设备(如鼠标)的精确输 ...

  7. VUE单独页面body css设置

    使用created周期用JS来处理BODY的样式 export default { beforeCreate: function () { document.getElementsByTagName( ...

  8. pycharm 里面引用pymysql

    import pymysql db =pymysql.connect(host ='192.168.1.131',port=3306,user='jack',password ='jack',db = ...

  9. ConfluenceRemoteUserAuth

    配置confluence使用httpHeader的方式进行登录(目标版本:atlassian-confluence-6.3.3) 前提是已经安装好了Confluence,并且前端使用apache或者n ...

  10. 【CF700E】Cool Slogans 后缀自动机+线段树合并

    [CF700E]Cool Slogans 题意:给你一个字符串S,求一个最长的字符串序列$s_1,s_2,...,s_k$,满足$\forall s_i$是S的子串,且$s_i$在$s_{i-1}$里 ...