Mar*_*arc 7 sql t-sql sql-server
declare @minDateTime as datetime;
declare @maxDateTime as datetime;
set @minDateTime = '2014-01-13 02:00:00';
set @maxDateTime = '2014-12-31 14:00:00';
Run Code Online (Sandbox Code Playgroud)
我期待创建一个select语句,它将在@minDateTime和@maxDateTime之间每小时返回一次(没有可供选择的表.我不是在寻找where子句!):
2014-01-13 02:00:00
2014-01-13 03:00:00
2014-01-13 04:00:00
...
2014-12-31 12:00:00
2014-12-31 13:00:00
2014-12-31 14:00:00
Run Code Online (Sandbox Code Playgroud)
Pரத*_*ீப் 11
试试这个.用一个Recursive CTE.
DECLARE @minDateTime AS DATETIME;
DECLARE @maxDateTime AS DATETIME;
SET @minDateTime = '2014-01-13 02:00:00';
SET @maxDateTime = '2014-12-31 14:00:00';
;
WITH Dates_CTE
AS (SELECT @minDateTime AS Dates
UNION ALL
SELECT Dateadd(hh, 1, Dates)
FROM Dates_CTE
WHERE Dates < @maxDateTime)
SELECT *
FROM Dates_CTE
OPTION (MAXRECURSION 0)
Run Code Online (Sandbox Code Playgroud)
在上面的查询中Dates_CTE是a Common Expression Table,基本记录CTE是由第一个sql查询之前派生的UNION ALL.查询的结果为您提供了Minimum date.
UNION ALL重复执行第二次查询以获得结果.此过程recursive将持续到日期小于@maxDateTime.
| 归档时间: |
|
| 查看次数: |
4979 次 |
| 最近记录: |