我有一个将用户事务记录到数据库中的应用程序。记录的数据包括:用户执行交易的时间(例如购买材料),当天(例如2016-12-23),用户交易的内容等。我有一个管理面板,收集这些数据并显示整体统计数据。我需要分析数据,例如;如果我需要找出该周所做的所有购买(从周日到当周的当天),我会从数据库中选择所有具有从前一个星期日到当天的日期的出现,以便我显示每周统计数据。 现在,由于平均每周完成,我只需要获得当前日期,前一个星期日以及两者之间的日期。我知道如何获得这两个,但不知道如何根据一周的日期获得中间日期。 请注意,时间的格式为
$today = date("Y-m-d");
并获得我之前使用的星期日:
$prevsunday = date("Y-m-d",strtotime("last Sunday"));
我问如何过中,以及如何处理更新的查询。 有什么建议可以改善我的查询吗?
答案 0 :(得分:0)
假设MySQL,您可以使用dayofweek
找出"之前的星期日":
mysql> select curdate(), dayofweek(curdate()),
curdate() - interval (dayofweek(curdate())-1) day AS sunday;
+------------+----------------------+------------+
| curdate() | dayofweek(curdate()) | sunday |
+------------+----------------------+------------+
| 2016-02-23 | 3 | 2016-02-21 |
+------------+----------------------+------------+
1 row in set (0.00 sec)
所以你有类似
的东西SELECT ...
...
WHERE dateofpurchase BETWEEN
(curdate() - interval (dayofweek(curdate())-1) day)
AND
curdate();