首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -选择当前一周中最小的一天,不一定是一周的第一天

问MySQL -选择当前一周中最小的一天,不一定是一周的第一天
EN

Stack Overflow用户
提问于 2012-07-16 01:06:15
回答 3查看 776关注 0票数 1

使用PHP/MySQL

我正在尝试创建一个select语句,它从当前一周中最小的一天获取数据(我使用它来显示某个玩家“本周”的数据)。这周从星期天开始。周日的数据可能并不总是存在的,因此如果没有找到周日的数据,那么它将使用找到的下一个最早的日期,星期一、星期二等。

我的date列名为'theDate‘,数据类型为'DATE’

查询需要如下所示:

代码语言:javascript
复制
SELECT *
FROM table_name
WHERE name = '$username'
AND [...theDate = earliest day of data found for the current week week]
LIMIT 1

它将返回单行数据。

这是我尝试过的一个获取“本周”数据的查询,它似乎在周日的查询中不能正常工作,它没有显示任何内容:

代码语言:javascript
复制
SELECT *
FROM table_name
WHERE playerName = '$username'
AND YEARWEEK(theDate) = YEARWEEK(CURRENT_DATE)
ORDER BY theDate;

这是我用来获取‘本月’数据的查询,即使没有找到月度数据的第一天,它也可以工作,它将使用当前月/年中找到的数据的最早日期(这个查询非常适合我):

代码语言:javascript
复制
SELECT *
FROM table_name
WHERE playerName =  '$username'
AND theDate >= CAST( DATE_FORMAT( NOW(),'%Y-%m-01') AS DATE)
ORDER BY theDate
LIMIT 1
EN

回答 3

Stack Overflow用户

发布于 2012-07-16 01:50:14

如果不尝试这样做,您可能需要一个内部查询:

代码语言:javascript
复制
select * 
from table_name tn
where tn.the_date = 
(select min(the_date) 
from table_name 
where WEEKOFYEAR(the_date) = WEEKOFYEAR(CURDATE())
and YEAR(the_date) = YEAR(CURDATE()))

也就是说,给我表中日期等于当前周和年份中的最早日期的行。

票数 0
EN

Stack Overflow用户

发布于 2012-07-16 02:17:45

尝试以下操作,将YOUR_DATE替换为所需列中的日期(theDate):

代码语言:javascript
复制
SELECT ADDDATE(YOUR_DATE, INTERVAL 1-DAYOFWEEK(YOUR_DATE) DAY) 
FirstDay from dual

你有没有尝试:

代码语言:javascript
复制
SELECT ADDDATE(theDate , INTERVAL 1-DAYOFWEEK(theDate ) DAY) FirstDay
FROM table_name
WHERE playerName =  '$username'
ORDER BY theDate DESC
LIMIT 1
票数 0
EN

Stack Overflow用户

发布于 2012-07-16 02:33:08

尝尝这个

代码语言:javascript
复制
SELECT * FROM table_name WHERE name = '$username' 
AND your_data IS NOT NULL
AND WEEK(the_date,0 = WEEK(NOW(),0))
ORDER BY DATE_FORMAT(the_date,'%w') ASC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11493897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档