2012-11-07 30 views
25

如何从当前日期中以最快的方式选择周数据(更准确地说,是最近7天的数据),因为我在表中有数百万或行。我在sql表中有一个created_date的时间戳。如何从今天的日期中选择最后一周的数据

我已经试过这

SELECT Created_Date 
FROM Table_Name 
WHERE Created_Date >= DATEADD(day,-7, GETDATE()) 

我有两个问题:

  1. 这是查询是正确的?
  2. 这是从包含数百万行的表中获取最后七天数据的最快方法吗?

回答

12

是的,语法是准确的,它应该没问题。

这是我对你的具体情况创建SQL Fiddle Demo

3
  1. 查询正确

2A。只要最近七天的行数少于整个表格,索引可以帮助

2B。如果你有兴趣只在CREATED_DATE你可以尝试使用一些GROUP BY和计数,它应与结果集的大小帮助

3

选择记录过去7天

WHERE Created_Date >= DATEADD(day, -7, GETDATE()) 

选择当前记录本周

SET DATEFIRST 1 -- Define beginning of week as Monday 
SELECT * FROM 
WHERE CreatedDate >= DATEADD(day, 1 - DATEPART(dw, GETDATE()), CONVERT(DATE, GETDATE())) 
    AND CreatedDate < DATEADD(day, 8 - DATEPART(dw, GETDATE()), CONVERT(DATE, GETDATE())) 

,如果你想选择的最后一周,而不是过去的7天记录

SET DATEFIRST 1 -- Define beginning of week as Monday 
SELECT * FROM 
WHERE CreatedDate >= DATEADD(day, -(DATEPART(dw, GETDATE()) + 6), CONVERT(DATE, GETDATE())) 
    AND CreatedDate < DATEADD(day, 1 - DATEPART(dw, GETDATE()), CONVERT(DATE, GETDATE())) 
相关问题