29 日以降に strtotime 関数を実行すると、2 月のバグが発生し、代わりに 3 月の結果が得られることは理解しています。
また、日付を 2 月 1 日に設定すると、この問題を回避できることがわかりました。
しかし、ここに問題があります。過去 12 か月の記録を調べて、追跡用の売上/請求番号を生成しています。ループが次のようになっている場合、2 月にすべてのレコードを要求するにはどうすればよいですか?
setlocale( LC_MONETARY, 'en_US' );
$i = 0;
while( $i <= 11 ) {
$select = "SELECT * FROM `my_table` " .
"WHERE YEAR( billing_date ) = '" . date( 'Y', strtotime( -$i . ' month' )) . "' " .
" AND MONTH( billing_date ) = '" . date( 'm', strtotime( -$i . ' month' )) . "'";
$result = mysql_query( $select );
$num_rows = mysql_num_rows( $result );
$sales = 16 * $num_rows;
echo "<p align='center'>";
echo "Sales for " . date( 'M, Y', strtotime( '-' . $i . ' month' ) ) .
" " . money_format( '%i', $sales );
echo "</p>";
$i++;
}
2 月のバグを回避するにはどうすればよいですか? if
発言だろうか。それはどのように見えるでしょうか?