我需要获取从2016年1月1日到今天的所有日期。
示例:
01-01-2016
02-01-2016
03-01-2016
.
.
.
01-02-2016
.
.
.
17-11-2017
任何帮助都将不胜感激。
答案 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() 开始 打破; 结束 端