Zer*_*ity 30 dateadd sql-server-2008
如何以最快的方式从当前日期选择周数据(更确切地说,最近7天数据),因为我在表中有数百万或行.我在sql表中有created_date的时间戳.
我试过这个
SELECT Created_Date
FROM Table_Name
WHERE Created_Date >= DATEADD(day,-7, GETDATE())
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
Ahm*_*mad 14
是的,语法准确,应该没问题.
这是我为您的特定情况创建的SQL Fiddle演示
create table sample2
(
id int primary key,
created_date date,
data varchar(10)
)
insert into sample2 values (1,'2012-01-01','testing');
Run Code Online (Sandbox Code Playgroud)
以下是如何选择数据
SELECT Created_Date
FROM sample2
WHERE Created_Date >= DATEADD(day,-11117, GETDATE())
Run Code Online (Sandbox Code Playgroud)
选择过去7天的记录
WHERE Created_Date >= DATEADD(day, -7, GETDATE())
Run Code Online (Sandbox Code Playgroud)
选择当前周的记录
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()))
Run Code Online (Sandbox Code Playgroud)
如果要选择上周而不是过去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()))
Run Code Online (Sandbox Code Playgroud)