MySQL:如何选择本周的记录?

标签 mysql date

我有表temp,其结构位于 sqlfiddle :

id(int 11 primary key)
name(varchar 100)
name2(varchar 100)
date(datetime)

我想获得本周的记录,例如,如果现在是 2013 年 11 月 21 日,我想要 2013 年 11 月 18 日到 2013 年 11 月 24 日(本周)的所有行

现在我看到下一个算法:

  1. 获取工作日
  2. 计算星期一是多少天前
  3. 计算星期一的日期
  4. 计算 future 日期周日
  5. 在指定日期提出请求

请告诉我,是否存在更短的算法(最好在查询 MySQL 中)?

添加问题是:为什么 this query选择日期 17.11.2013(星期日) - 23.11.2013(星期六) 的记录以及如何获取日期 18.11.2013(星期一) - 24.11.2013(星期日) 的记录?

查询:

select * from temp
where yearweek(`date`) = yearweek(curdate())

谢谢!

最佳答案

使用YEARWEEK() :

SELECT *
FROM   your_table
WHERE  YEARWEEK(`date`, 1) = YEARWEEK(CURDATE(), 1)

关于MySQL:如何选择本周的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51068564/

相关文章:

mysql - 计算总行数,同时在一个 MySQL 查询中选择其中的一个子集?

带有字符串值的 mysql 数据透视表

php - 我想用 php 在 mysql 表中添加多个数据

java - 日期属性在 java 类的方法中不起作用

python - 从给定日期提取日、月和年的最快方法是什么?

php - 等待直到从站同步

mysql - 迁移错误 - 错误 : You have an error in your SQL syntax; check the manual that corresponds

javascript - 使用自纪元以来的毫秒数比较 JavaScript 中的日期和时间

java - 将 SimpleDateFormatter 与时区一起使用时出现意外结果

java - 对象上的 SetText 不适用于日历