更新
日付の範囲についてデータをクエリするためのはるかに優れたインデックスフレンドリーな方法
SELECT id, FROM_UNIXTIME(timestampfield) timestamp
FROM table1
WHERE timestampfield >= UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH)
AND timestampfield < UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY);
注: 列データに関数を適用するのではなく、条件の右側で必要なすべての計算を実行します(これは定数であり、実行後に1回だけ評価されます)。このようにして、MySQLがtimestampfield
にある可能性のあるインデックスの恩恵を受けることができます。 列。
元の回答:
SELECT id, FROM_UNIXTIME(timestampfield) timestamp
FROM table1
WHERE MONTH(FROM_UNIXTIME(timestampfield)) = MONTH(CURDATE())
AND YEAR(FROM_UNIXTIME(timestampfield)) = YEAR(CURDATE())
注: このクエリは正しい結果を生成しますが、timestampfield
にある可能性のあるインデックスの適切な使用法を事実上無効にします。 列(MySQLがフルスキャンを実行するように強制されることを意味します)
これが