簡體   English   中英

MySQL-選擇當前一周中的最少一天,不一定選擇一周中的第一天

[英]MySQL - Select the least day of the current week, not necessarily the first day of the week

使用PHP / MySQL

我正在嘗試創建一個select語句,該語句從當前一周的最少一天中獲取數據(我正在使用它來顯示某位玩家“本周”的數據)。 這個星期從星期日開始。 周日的數據可能並不總是存在的,因此,如果找不到周日數據,則它將使用發現的下一個最早的日期,周一,周二等。

我的日期列名為“ theDate”,數據類型為“ DATE”

查詢將類似於:

SELECT *
FROM table_name
WHERE name = '$username'
AND [...theDate = earliest day of data found for the current week week]
LIMIT 1

它將返回一行數據。

這是我嘗試獲取“本周”數據的查詢,它似乎在周日無法正常工作,它什么也沒顯示:

SELECT *
FROM table_name
WHERE playerName = '$username'
AND YEARWEEK(theDate) = YEARWEEK(CURRENT_DATE)
ORDER BY theDate;

這是我用來獲取“本月”數據的查詢,即使沒有找到本月的第一天,它也可以使用,它將使用當前月/年中發現的最早數據(此查詢)最適合我):

SELECT *
FROM table_name
WHERE playerName =  '$username'
AND theDate >= CAST( DATE_FORMAT( NOW(),'%Y-%m-01') AS DATE)
ORDER BY theDate
LIMIT 1

不嘗試此操作,您可能需要一個內部查詢:

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()))

即給我表格中的行,其日期等於當前星期和年份中表格中最早的日期。

請嘗試以下操作,將YOUR_DATE替換為所需列中的日期(theDate):

SELECT ADDDATE(YOUR_DATE, INTERVAL 1-DAYOFWEEK(YOUR_DATE) DAY) 
FirstDay from dual


你試過了嗎:

SELECT ADDDATE(theDate , INTERVAL 1-DAYOFWEEK(theDate ) DAY) FirstDay
FROM table_name
WHERE playerName =  '$username'
ORDER BY theDate DESC
LIMIT 1

嘗試這個

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM