11

「2012-07-12」の場合、週の始まり、つまり「2012-07-08」と月の始まり、つまり「2012-07-01」を取得するにはどうすればよいですか?

4

5 に答える 5

30

月の初日:

SELECT DATE_FORMAT('2007-07-12', '%Y-%m-01');

出力:2007-07-01

週の最初の日:

SELECT DATE_SUB('2007-07-12', INTERVAL DAYOFWEEK('2007-07-12')-1 DAY);

出力:2007-07-08

MySQLリファレンス:http ://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

于 2012-07-12T23:00:50.020 に答える
11

Borophyll のと同じ回答ですが、 user151220 の回答に記載されている日付の書式設定/解析を回避する文字列だけでなく、日付を返すように月の初日の動作を変更しました。

月の最初の日:

SELECT DATE_SUB('2007-07-12', INTERVAL DAYOFMONTH('2007-07-12') - 1 DAY);

出力:2007-07-01

週の最初の曜日:

SELECT DATE_SUB('2007-07-12', INTERVAL DAYOFWEEK('2007-07-12') - 1 DAY);

出力:2007-07-08

MySQL リファレンス: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

于 2014-11-13T08:03:05.537 に答える
4

月曜日を週の最初の曜日にする必要がある場合:

SELECT DATE_SUB('2007-07-12', INTERVAL WEEKDAY('2007-07-12') DAY);

出力: 2007-07-09

これは、日曜日から始まるDAYOFWEEKではなく、月曜日から始まるWEEKDAY関数に依存しています。

于 2016-02-14T15:38:44.240 に答える
0

これは、コーディングして忘れる場合に機能します。現在はdatetimeを使用し、常にMTD結果を返します-

where date_completed between date_sub(date(now()), INTERVAL dayofmonth(now()) -1 day) and now()
于 2016-07-26T15:32:01.723 に答える