2010-05-27 61 views
2

嗨如何获取当前周的数据?SQL本周选择数据

从交易

选择*,其中transactionDate ....

+1

您正在使用哪种RDBMS? (它可能会提供这方面的特殊功能。) – 2010-05-27 05:43:11

+0

嗨,我正在使用微软访问 – user236501 2010-05-27 05:53:05

+0

@ newbie123:这里的教训是确保在询问SQL问题时指定数据库。由于您没有指定数据库,因此大部分答案都不适用于您的问题。 – 2010-05-27 18:02:34

回答

7

在SQL Server基础上的星期。请参阅DATEPART为@@ DATEFIRST等。例如,这是在美国/英国settigs自上周日以来所有行业:

WHERE DATEPART(week, transactionDate) = DATEPART(week, GETDATE()) 

编辑:

获取,使用这个DatePart并使用 “WW”为你想要的日期的一部分。 在回答评论时,“周”不是一个变量;它的日期有点想要

所以:

WHERE DatePart("ww", transactionDate) = DatePart("ww", GETDATE()) 
+0

我正在使用微软访问,如果使用getdate()出错了 – user236501 2010-05-27 05:53:27

+0

DATEPART(week,transactionDate)周末变量我应该输入什么? – user236501 2010-05-27 05:58:47

+1

我认为这个答案必须来自添加ms-access标签之前,因为它的很大一部分不再相关。 – Fionnuala 2010-05-27 07:46:26

0

简单而轻便:

SELECT * 
    FROM Transaction 
    WHERE transactionDate >= ? 
     AND transactionDate <= ? 

在你的服务器端代码中的两个参数计算为“周”的任何定义你需要。

0

在IBM DB2

SELECT * 
FROM Transaction 
WHERE transactionDate BETWEEN CURRENT TIMESTAMP - 7 days AND CURRENT TIMESTAMP; 
0

mySQL的(标准日期戳)

SELECT * 
FROM Transaction 
WHERE WEEK(NOW())=WEEK(transactionDate); 

mySQL的(UNIX时间戳标记)一个未优化的查询

SELECT * 
FROM Transaction 
WHERE WEEK(NOW())=WEEK(FROM_UNIXTIME(transactionDate)); 

位。可能是更有效的方法。

注意:这不是滚动7天。只是一年的本周。

编辑:对不起,我没有看到MS访问标记。忽略所有这些:|

+0

如果使用访问? – user236501 2010-05-27 06:04:32

+1

像@gbn说: WHERE DATEPART( “WW”,transactionDate)= DATEPART( “WW”,GETDATE()) 周应以 “WW” – User123342234 2010-05-27 06:32:50

1

在Microsoft Access

ñ天:

SELECT * 
FROM Transaction 
WHERE transactionDate >=Date()-7 

如果你有指标,这种类型的差异套装,这将是更快,因为它是sargable

这一周周差:

SELECT * 
FROM Transaction 
WHERE DateDiff("w",[transactionDate],Date())=0 

BTW它被认为是不好的做法,使用*

则DateDiff:http://office.microsoft.com/en-us/access/ha012288111033.aspx

+1

1用于引入我的术语替换 “可优化搜索” ,尽管我不确定比只说“可以使用索引”更好。 – 2010-05-27 18:01:04

0

在Access中,如果你想运行一个查询,发现倒在本周记录,使用

​​

那周日到周六。如果您想要工作周,可以使用+2和+6。

+0

取决于你如何定义“本周”,你不觉得吗?你的意思是过去7天吗?包括今天或今天之前?或者,今天的星期一在星期一开始?还是星期天? – 2010-05-27 18:00:16