1

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

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
4

3 に答える 3

0

これを試さずに、おそらく内部クエリが必要です。

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

つまり、現在の週と年のテーブルの最も早い日付に等しい日付のテーブルの行を教えてください。

于 2012-07-15T17:50:13.850 に答える
0

次のことを試して、必要な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
于 2012-07-15T18:17:45.337 に答える
0

これを試して

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
于 2012-07-15T18:33:07.627 に答える