SQL选择当前周/上周

时间:2014-04-06 14:21:31

标签: mysql sql

我正在寻找一种基于以下方式选择行的方法:

  • 本周(S-S)
  • 上周(S-S)

我遇到的问题是从周日 - 周日中专门选择。

目前我正在使用:

SELECT SUM(time) 
FROM `time` 
WHERE `projectid` = '$pid' && created > DATE_SUB(NOW(), INTERVAL 1 WEEK)

任何帮助都会很棒,谢谢!

1 个答案:

答案 0 :(得分:1)

MySQL确实有一个WEEK函数可以使用:

SELECT SUM(time) 
FROM `time` 
WHERE
    `projectid` = '$pid'
    AND created > NOW() - INTERVAL 2 WEEK
    AND WEEK(created) IN (WEEK(NOW()), WEEK(NOW() - INTERVAL 1 WEEK))

注释

需要第一个条件(created > NOW() - INTERVAL 2 WEEK)才能获得当前和前几周的所有数据,然后限制您感兴趣的两周。否则,如果您有足够的数据,您将获得表格中每年相应周的所有数据的汇总。它还有一个额外的好处,即允许查询在该字段上使用索引。

您还需要使用" WEEK(NOW() - INTERVAL 1 WEEK)"由于今年的第一周。否则,WEEK(NOW()) - 1就足够了