什么是SQL查询以获取从特定日期到今天日期的所有日期列表

时间:2017-11-17 09:31:02

标签: sql sql-server

我需要获取从2016年1月1日到今天的所有日期。

示例:

01-01-2016
02-01-2016
03-01-2016
.
.
.
01-02-2016
.
.
.
17-11-2017

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:2)

您可以使用公用表表达式来实现这一点,这是最快的方法之一

;WITH cte 
 as
(
  SELECT CONVERT(DATE,'01-01-2016') as DateCol
  UNION ALL
  SELECT CONVERT(DATE,DATEADD(DAY,1,DateCol))  FROM CTE
  WHERE DATEADD(DAY,1,DateCol) <= '11-17-2017'
 )

SELECT * FROM CTE 
OPTION (maxrecursion 0)

答案 1 :(得分:0)

 SELECT *FROM Table_Name 
 WHERE CONVERT(NVARCHAR,date_column,111) >=CONVERT(NVARCHAR,@From_Date,111) and  CONVERT(NVARCHAR,date_column,111) <=CONVERT( NVarchar, @TO_Date, 111)

答案 2 :(得分:0)

您需要有一个数字表才能实现此目的..

select dateadd(day,Number,'01-01-2016') from numbers
where 
dateadd(day,Number,'01-01-2016')<=getdate()

创建数字表

USE Model
GO

CREATE TABLE Numbers
(
    Number INT NOT NULL,
    CONSTRAINT PK_Numbers 
        PRIMARY KEY CLUSTERED (Number)
        WITH FILLFACTOR = 100
)

INSERT INTO Numbers
SELECT
    (a.Number * 256) + b.Number AS Number
FROM 
    (
        SELECT number
        FROM master..spt_values
        WHERE 
            type = 'P'
            AND number <= 255
    ) a (Number),
    (
        SELECT number
        FROM master..spt_values
        WHERE 
            type = 'P'
            AND number <= 255
    ) b (Number)
GO

<强>参考文献:
http://dataeducation.com/you-require-a-numbers-table/

答案 3 :(得分:0)

这是我从你的要求中理解的。检查以下查询。

=========================================

声明@date datetime =&#39; 2016-01-01&#39;

声明@tbl表 (确定日期)

while(@ date&lt; = GETDATE()) 开始 插入@tbl 选择@date

设置@ date = @ date + 1

if @ date = GETDATE() 开始 打破; 结束 端

从@tbl

中选择*