mysql怎么查询上一周的数据

百度出来的sql是:

SELECT time FROM atkg WHERE YEARWEEK(date_format(time,'%Y-%m-%d')) = YEARWEEK(now())-1

可是mysql查出来的是周日到周六的时间,我想要周一到周日的时间啊,sql怎么写,求教

阅读 6k
4 个回答

给yearweek带个参数1就行

SELECT time FROM atkg WHERE YEARWEEK(date_format(time,'%Y-%m-%d'), 1) = YEARWEEK(now(), 1)-1

你得先知道上一周的起始时间戳

从周一开始计算
SELECT time FROM atkg WHERE YEARWEEK(date_format(time,'%Y-%m-%d')) = YEARWEEK(now() - INTERVAL 1 DAY);

楼主应该的问的是YEARWEEK函数问题,YEARWEEK函数用法:

SELECT YEARWEEK('2017-03-27',1)  //从周一开始计算一周  

其中第二个参数是 mode ,具体指的意思如下:

MySQL 的 YEARWEEK 是获取年份和周数的一个函数,函数形式为 YEARWEEK(date[,mode])

Mode First day of week Range Week 1 is the first week …
0 Sunday 0-53 with a Sunday in this year
1 Monday 0-53 with more than 3 days this year
2 Sunday 1-53 with a Sunday in this year
3 Monday 1-53 with more than 3 days this year
4 Sunday 0-53 with more than 3 days this year
5 Monday 0-53 with a Monday in this year
6 Sunday 1-53 with more than 3 days this year
7 Monday 1-53 with a Monday in this year

按楼主你的写法:SELECT time FROM atkg WHERE YEARWEEK(date_format(time,'%Y-%m-%d'),1) = YEARWEEK(now(),1)-1

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题