0

今月を通過せずに、今月の8日から先月の8日までのすべてのレコードをどのように選択しますか?私の日付列は日付型です。

SELECT * 
FROM table
WHERE date BETWEEN '8th of last month' AND 
                   '8th of this month'

PHPで日付の計算を行い、それをMySQLに送信してみました。しかし、何年も考慮に入れると、少し複雑になります。代わりにSQLでこれを達成できるかどうか疑問に思っていますか?

4

2 に答える 2

2

PHPの使用は、。を使用した相対時間を使用すると、読みやすさの観点からより簡単になる場合があります。strtotime()

以下から始めてください。

echo date('Y-m-d', strtotime('eighth of last month'));

アップデート

上で考えたように、序数は機能しません。ただし、その月の同じ日(つまり、8日)を使用するとします。以下は問題ありません。

echo date('Y-m-08', strtotime('last month'));
于 2012-09-06T03:33:10.280 に答える
2

これが解決策です

echo date('Y-m-d', mktime(0, 0, 0, date('n') - 1, 8));

strtotimeを使用したい場合

echo date('Y-m-d', strtotime('+7 days', strtotime('first day of last month')));
于 2012-09-06T03:43:17.953 に答える