如何从今天的日期选择最后一周的数据

时间:2012-11-07 08:51:49

标签: sql-server-2008 dateadd

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

我试过这个

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

我有两个问题:

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

3 个答案:

答案 0 :(得分:14)

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

以下是我为您的特定情况创建的SQL Fiddle Demo

create table sample2
(
    id int primary key,
    created_date date,
    data varchar(10)
  )

insert into sample2 values (1,'2012-01-01','testing');

以下是如何选择数据

SELECT Created_Date
FROM sample2
WHERE Created_Date >= DATEADD(day,-11117, GETDATE())

答案 1 :(得分:9)

选择过去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()))

答案 2 :(得分:3)

  1. 查询正确
  2. 2A。至于过去七天的行数比整个表少得多,索引可以帮助

    2B。如果您只对Created_Date感兴趣,可以尝试使用一些group by和count,它应该有助于结果集大小