Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取从前一天开始的最后14天(2周)的日期表_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 获取从前一天开始的最后14天(2周)的日期表

Sql 获取从前一天开始的最后14天(2周)的日期表,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想写一个查询,给出过去14天的日期列 从昨天开始 例如: Dates 2012-06-21 2012-06-20 2012-06-19 -- - 另一种方式 ;with days(day) as ( select getdate() - 1 as day union all select day - 1 from days where day > dateadd(day, -14, getdate()) ) selec

我想写一个查询,给出过去14天的日期列 从昨天开始

例如:

Dates 

2012-06-21
2012-06-20
2012-06-19
--
-
另一种方式

;with days(day) as
(
    select getdate() - 1 as day
        union all
    select day - 1
        from days
        where day > dateadd(day, -14, getdate())
)
select cast(day as date) from days
另一种方式

;with days(day) as
(
    select getdate() - 1 as day
        union all
    select day - 1
        from days
        where day > dateadd(day, -14, getdate())
)
select cast(day as date) from days

@EkoostikMartin我通过从上一个表中检索来尝试这一点,但是从日志数据顺序中按convert(nvarchar(10),TimeLog,120)DESC选择Distinct convert(nvarchar(10),TimeLog,120)作为日期需要很多时间@EkoostikMartin我通过从上一个表中检索来尝试这一点,但是从日志数据顺序中按convert(nvarchar(10),TimeLog,120)DESC选择Distinct convert(nvarchar(10),TimeLog,120)作为日期需要很多时间;回答很酷,你不能在第一次查询中去掉[object\u id]的
ORDER BY[object\u id]
,而在第二次查询中去掉
ORDER BY n
?单独应用
行号()
并不一定意味着结果是1-14。大多数时候你可能会注意到这一点,但这并不能保证。该
orderby
用于
TOP
,而不是结果。最后的
ORDER BY
也可能是
ORDER BY Dates DESC
——它与CTE中的数字几乎没有关系(例如,将我的第二个
ORDER BY
更改为
ORDER BY NEWID()
)很有趣,当然这是离题的,但这是因为sys.objects实际上是一个视图吗?如果sys.objects是一个表,[object_id]是一个聚集索引,那么我们就不需要
orderby
?@EkoostikMartin,因为你被引入了一个神话。无论是否使用聚集索引,如果没有order by,就没有order。通常这是SQLServer决定返回数据的方式,但不能保证。如果您想要并期望某个订单,您必须添加一个order by。很酷的回答,您不能在第一次查询中取消按[object\u id]排序的
订单,而在第二次查询中取消按n
排序的
订单吗?仅应用
行编号()
并不一定意味着您将得到1-14。大多数时候你可能会注意到这一点,但这并不能保证。该
orderby
用于
TOP
,而不是结果。最后的
ORDER BY
也可能是
ORDER BY Dates DESC
——它与CTE中的数字几乎没有关系(例如,将我的第二个
ORDER BY
更改为
ORDER BY NEWID()
)很有趣,当然这是离题的,但这是因为sys.objects实际上是一个视图吗?如果sys.objects是一个表,[object_id]是一个聚集索引,那么我们就不需要
orderby
?@EkoostikMartin,因为你被引入了一个神话。无论是否使用聚集索引,如果没有order by,就没有order。通常这是SQLServer决定返回数据的方式,但不能保证。如果您希望并期望获得某个订单,则必须通过添加订单。小调诡辩,OP要求从昨天开始创建结果集。您应该定义关键字,如
day
IMHO。同时比较计划和统计时间。您可能会惊讶于实际涉及对象的查询具有较低的持续时间、较少的读取和准确的估计。。。小心点,亚历克斯。这是一个“计数递归CTE”,即使是在小行计数时,它们也会对资源和性能造成极大的影响。请看下面的文章了解它们到底有多糟糕。小诡辩,OP要求结果集从昨天开始。你应该划出像
day
IMHO这样的关键词。同时比较计划和统计时间。您可能会惊讶于实际涉及对象的查询具有较低的持续时间、较少的读取和准确的估计。。。小心点,亚历克斯。这是一个“计数递归CTE”,即使是在小行计数时,它们也会对资源和性能造成极大的影响。请看下面的文章了解它们到底有多糟糕。