私のPHPコードでは、date( "N")ISO-8601の曜日1(月曜日)から7(日曜日)の数値表現を使用しています。
特定の日付を検索するためのクエリを作成したいとき。
私はMySQLでそれを見つけました:
%wを使用するdate_formatは、 (0 = Sunday..6 = Tuesday)を返します。
DAYOFWEEK(date)が返されます(1=日曜日..7 =土曜日)
PHPを実行せずにこの問題を修正するための迅速な方法はありますか?
私のPHPコードでは、date( "N")ISO-8601の曜日1(月曜日)から7(日曜日)の数値表現を使用しています。
特定の日付を検索するためのクエリを作成したいとき。
私はMySQLでそれを見つけました:
%wを使用するdate_formatは、 (0 = Sunday..6 = Tuesday)を返します。
DAYOFWEEK(date)が返されます(1=日曜日..7 =土曜日)
PHPを実行せずにこの問題を修正するための迅速な方法はありますか?
コメントで言われているように:
1つを減算または追加します(PHPまたはMySQLクエリのいずれかに)。
一致させようとしています...
PHPの日付('N'): 月火水木金土日 1 2 3 4 5 6 7
これらの1つに...
MySQL DATE_FORMAT(col、'%w'): 月火水木金土日 1 2 3 4 5 6 0 MySQL DAYOFWEEK(col): 月火水木金土日 2 3 4 5 6 7 1
あなたは日曜日だけを心配する必要があるので、私はCASE
ステートメントを使用します。DATE_FORMAT
SELECT
CASE
WHEN DATE_FORMAT(col, '%w') = 0
THEN 7
ELSE DATE_FORMAT(col, '%w')
END AS dayofweek
...
SELECT (DAYOFWEEK(column)+6)%7 as phpdaten FROM ...
たとえば、現在の日付の場合、次のように週の最初の曜日を選択できます。
SELECT DATE_SUB(now(), INTERVAL
IF (DATE_FORMAT(now(), '%w') -1 = -1,
DATE_FORMAT(now(), '%w') + 6,
DATE_FORMAT(now(), '%w') -1) DAY) FIRST_DAY,
now();
誰もmysqlを使用していないことに驚いていますWEEKDAY
。ISO -8601では、週は月曜日に始まります。
WEEKDAY(日付)
日付の平日インデックスを返します(0 =月曜日、1 =火曜日、…6 =日曜日)。
DAYOFWEEK(日付)
日付の平日インデックスを返します(1 =日曜日、2 =月曜日、…、7 =土曜日)。
mysql PHP result
WEEKDAY(date) == date('N' , timestamp) - 1 0: Monday, 1: Tuesday, … 6: Sunday
WEEKDAY(date) + 1 == date('N' , timestamp) 1: Monday, 2: Tuesday, … 7: Sunday
DAYOFWEEK(date) -1 == date('w' , timestamp) 0: Sunday, 1: Monday, … 6: Saturday
DAYOFWEEK(date) == date('w' , timestamp) + 1 1: Sunday, 2: Monday, … 7: Saturday