2011-11-10 14 views
2

私はmysqlデータベースからタイムスタンプの範囲を選択しようとしていますが、問題があるので、わかりません。mysqlタイムスタンプの範囲を選択する

私はテーブル 'pedido'とフィールド 'fecha'がタイムスタンプとして設定されています。私は問題ではないはずのエントリーがたくさんある。

ただしyは、このクエリを選択した場合:私は応答がない

SELECT * FROM pedido WHERE fecha BETWEEN UNIX_TIMESTAMP('2011-10-10') AND UNIX_TIMESTAMP('2011-11-10') ORDER BY fecha DESC 

。助けのための

Thanls

+0

テーブルにフィールドタイプを投稿することはできますか? – jjwdesign

+0

@jjwdesign、フィールドタイプは 'TIMESTAMP'です – Johan

答えて

6

MySQLは整数としてないストア日付/時刻データを行います。
UNIX_TIMESTAP()は、1〜1970年以降の秒数を示す整数を返します。
日付と整数を比較しています。これは決してうまくいかないでしょう。

にクエリを書き直し

:あなたはPHPで比較したい場合はをPHP注だから、あなたはあなたのSQL文でunix_timestampに変換したり、PHPに変換するために、どちらか使用unix_timestampsを必要としない

SELECT * 
FROM pedido 
WHERE fecha BETWEEN '2011-10-10 00:00:00' AND '2011-11-10 23:59:59' 
ORDER BY fecha DESC 

コード。

+0

あなたはそれを言うとき –

0

カラムがTIMESTAMPタイプの場合は、MySQLのデフォルトの日付フォーマットを使用し、Unixタイムスタンプは使用しません。また、DATE(fecha)に電話すると、日付部分のみが比較され、時間、分、秒は無視されます。

SELECT * 
FROM pedido 
WHERE DATE(fecha) BETWEEN '2011-10-10' AND '2011-11-10' 
ORDER BY fecha DESC 
+0

それは' BETWEEN'を除いてインデックスを使用しているすべての変更を殺しますので、**その**問題を回避したい'fecha'が索引付けされている場合は、' 2011-10-10 'と' 2011-11-10 23:59:59'white fecha BETWEEN 'を実行するほうがはるかに高速です。 – Johan