2

私のPHPコードでは、date( "N")ISO-8601の曜日1(月曜日)から7(日曜日)の数値表現を使用しています。

特定の日付を検索するためのクエリを作成したいとき。

私はMySQLでそれを見つけました:

  • %wを使用するdate_format、 (0 = Sunday..6 = Tuesday)を返します。

  • DAYOFWEEK(date)が返されます(1=日曜日..7 =土曜日)

PHPを実行せずにこの問題を修正するための迅速な方法はありますか?

4

5 に答える 5

2

コメントで言われているように:

1つを減算または追加します(PHPまたはMySQLクエリのいずれかに)。

于 2012-11-08T18:39:28.073 に答える
2

一致させようとしています...

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
...
于 2012-11-08T18:46:18.540 に答える
2
SELECT (DAYOFWEEK(column)+6)%7 as phpdaten FROM ...
于 2013-06-01T10:25:19.423 に答える
0

たとえば、現在の日付の場合、次のように週の最初の曜日を選択できます。

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();
于 2015-12-08T15:09:15.780 に答える
0

誰もmysqlを使用していないことに驚いていますWEEKDAYISO -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
于 2018-05-22T09:41:50.440 に答える