如何从当前日期中以最快的方式选择周数据(更准确地说,是最近7天的数据),因为我在表中有数百万或行。我在sql表中有一个created_date的时间戳。如何从今天的日期中选择最后一周的数据
我已经试过这
SELECT Created_Date
FROM Table_Name
WHERE Created_Date >= DATEADD(day,-7, GETDATE())
我有两个问题:
- 这是查询是正确的?
- 这是从包含数百万行的表中获取最后七天数据的最快方法吗?
如何从当前日期中以最快的方式选择周数据(更准确地说,是最近7天的数据),因为我在表中有数百万或行。我在sql表中有一个created_date的时间戳。如何从今天的日期中选择最后一周的数据
我已经试过这
SELECT Created_Date
FROM Table_Name
WHERE Created_Date >= DATEADD(day,-7, GETDATE())
我有两个问题:
是的,语法是准确的,它应该没问题。
这是我对你的具体情况创建SQL Fiddle Demo
2A。只要最近七天的行数少于整个表格,索引可以帮助
2B。如果你有兴趣只在CREATED_DATE你可以尝试使用一些GROUP BY和计数,它应与结果集的大小帮助
选择记录过去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()))