0

日付をUNIXタイムスタンプで保存するフィールドを持つテーブルがあります(例:1286515961)。

必要に応じて、その月にあるレコードを選択します(例:「2010年10月」)。

速度を上げるために、mysqlクエリで直接レコードを選択したいのですが、UNIXタイムスタンプを使用しています。

誰か助けてもらえますか?すでにありがとう

4

2 に答える 2

0

最も簡単な方法は、FROM_UNIXTIMEを使用することです。

SELECT *
FROM table
WHERE FROM_UNIXTIME(date) >= '2010-10-01'
  AND FROM_UNIXTIME(date) <  '2010-11-01'
于 2010-10-08T23:58:42.967 に答える
0

アレックの答えは良いです

これは:

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')

(未テスト)

于 2010-10-09T00:14:35.430 に答える