日付をUNIXタイムスタンプで保存するフィールドを持つテーブルがあります(例:1286515961)。
必要に応じて、その月にあるレコードを選択します(例:「2010年10月」)。
速度を上げるために、mysqlクエリで直接レコードを選択したいのですが、UNIXタイムスタンプを使用しています。
誰か助けてもらえますか?すでにありがとう
日付をUNIXタイムスタンプで保存するフィールドを持つテーブルがあります(例:1286515961)。
必要に応じて、その月にあるレコードを選択します(例:「2010年10月」)。
速度を上げるために、mysqlクエリで直接レコードを選択したいのですが、UNIXタイムスタンプを使用しています。
誰か助けてもらえますか?すでにありがとう
最も簡単な方法は、FROM_UNIXTIMEを使用することです。
SELECT *
FROM table
WHERE FROM_UNIXTIME(date) >= '2010-10-01'
AND FROM_UNIXTIME(date) < '2010-11-01'
アレックの答えは良いです
これは:
SELECT * FROM table WHERE FROM_UNIXTIME(date) >= '2010-10-01' AND FROM_UNIXTIME(date) < '2010-11-01'
しかし、実際には逆の方が速いです。境界をunixタイムスタンプに変換してから、比較を行います。したがって、変換はテーブル内のすべての行に対して実行する必要はなく、境界に対してのみ実行する必要があります。整数を内部で比較できます。これは、日時オブジェクトへの変換よりもはるかに高速です...
SELECT * FROM table
WHERE date >= UNIX_TIMESTAMP('2010-10-01')
AND date < UNIX_TIMESTAMP('2010-11-01')
(未テスト)