如何以最快的方式从当前日期中选择周数据(更准确地说,是持续7天的数据),因为我在表中有数百万或行。我在sql表中有一个created_date的时间戳。
我试过这个
SELECT Created_Date
FROM Table_Name
WHERE Created_Date >= DATEADD(day,-7, GETDATE())我有两个问题:
发布于 2012-11-07 08:56:17
是的,语法是准确的,应该是好的。
下面是我为您的特定案例创建的SQL Fiddle演示
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())发布于 2016-06-03 02:50:20
选择过去7天的记录
SELECT * FROM [TableName]
WHERE Created_Date >= DATEADD(day, -7, GETDATE())选择当前周的记录
SET DATEFIRST 1 -- Define beginning of week as Monday
SELECT * FROM [TableName]
WHERE CreatedDate >= DATEADD(day, 1 - DATEPART(WEEKDAY, GETDATE()), CONVERT(DATE, GETDATE()))
AND CreatedDate < DATEADD(day, 8 - DATEPART(WEEKDAY, GETDATE()), CONVERT(DATE, GETDATE()))如果您想选择上周的记录,而不是最后7天的记录
SET DATEFIRST 1 -- Define beginning of week as Monday
SELECT * FROM [TableName]
WHERE CreatedDate >= DATEADD(day, -(DATEPART(WEEKDAY, GETDATE()) + 6), CONVERT(DATE, GETDATE()))
AND CreatedDate < DATEADD(day, 1 - DATEPART(WEEKDAY, GETDATE()), CONVERT(DATE, GETDATE()))发布于 2012-11-07 09:19:53
2A。就过去七天而言,索引的行数比整个表少得多。
2B。如果您只对Created_Date感兴趣,您可以尝试使用某个组by和count,它应该有助于结果集的大小。
https://stackoverflow.com/questions/13266130
复制相似问题