【发布时间】:2012-07-17 21:15:27
【问题描述】:
nDays := Round( dEndTime - dStartTime ) + 1;
For i in 1..7 Loop
nDay := i + 1;
if i = 7 Then
nDay := 1;
End If;
SELECT To_Date(To_Char((dStartTime+Level-1),'DD.MM.YYYY')||' 00:00','DD.MM.YYYY HH24:MI'),
To_Date(To_Char((dStartTime+Level-1),'DD.MM.YYYY')||' 23:59','DD.MM.YYYY HH24:MI')
FROM DUAL
WHERE To_Char( dStartTime + Level -1 , 'd' ) = To_Char(nDay)
CONNECT BY Level <= nDays;
End Loop;
输出:
22-JUL-12
23-JUL-12
18-JUL-12
19-JUL-12
20-JUL-12
21-JUL-12
我需要将此查询转换为 SQL Server 2008,请帮助找到相同的解决方法......
我已经尝试使用 nDay 从 1 到 7 进行单个查询的上述输出.....
【问题讨论】:
-
看看this SO question,您可以在SQL server 中使用CTE,类似于Oracle 的connect by(递归CTE 现在是ANSI 标准的层次结构移动方式)。
标签: sql oracle sql-server-2008