SQL本周选择数据

时间:2010-05-27 05:41:07

标签: sql ms-access

您如何获得本周的数据?

从Transaction中选择*,其中包含transactionDate ....

6 个答案:

答案 0 :(得分:7)

在SQL Server中基于一周的一周。有关@@ DATEFIRST等的信息,请参阅DATEPART。例如,这是自美国/英国国际机场周日以来的所有交易:

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

编辑:

对于Access,请使用 DatePart并使用“ww”表示您想要的部分日期。 在回答评论时,“周”不是变量;这是你想要的日期

所以:

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

答案 1 :(得分:1)

在Microsoft Access中

上次 n 天:

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

答案 2 :(得分:0)

简单但便携:

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

将服务器端代码中的两个参数计算为您需要的“周”定义。

答案 3 :(得分:0)

在IBM DB2中

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

答案 4 :(得分:0)

mySQL(标准日期戳)

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

mySQL(unix时间戳记)

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

未经优化的查询。可能是一种更有效的方式。

注意:这不是滚动7天。就在今年的当周。

编辑:抱歉,我没有看到ms-access标签。忽略所有这些:|

答案 5 :(得分:0)

在Access中,如果要运行查询以查找当前周的记录,请使用

SELECT *
FROM table
WHERE table.DateField Between (Date()-Weekday(Date())+1) And (Date()-Weekday(Date())+7);

周日到周六。如果你想要工作周,请使用+2和+6。