2011-08-09 18 views
1

私は私のSQL文で2つのintergerを比較できるかどうか疑問に思っていました。 私はunixtimestampとして保存された1つの日付フィールドを持っています。日付フィールドが2つの値の間にあるレコードを探したい。このような 何か:myNumberは、ループ関数から変数であるintergersを比較するmysql

Select ... From ... WHERE (dateField + myNumber) Between (x) And (y) 

これは可能でしょうか?

編集: myNumberは常に日付フィールドの値

私は何をしようとしていますが、将来のある時点で再び起こらなければならないイベントのリストを作成しているよりも大きい正の数、です。 私は自分のテーブルに記録されたイベントのいくつかのレコードを持っています。私はこれらのイベントが将来何時起こるかを調べるためのクエリを実行します。

私はロジックで考えた理由だこと私は2011年3月に起こった10レコードを持っていることを言って、私は月に再び起こる必要があり、それらの10のレコードのリストを作成する必要があり、2012年

します:[ 2012年3月1日] [2012年3月31日]

私の日付がUNIXのタイムスタンプとして保存されているので、それは十分に単純だったようです。

+0

ボヘミアンは、右変更しないでフィールドにインデックスがある可能性があります。インデックスを変更すると、インデックスは使用されません – cristian

+1

あなたの質問は何ですか?あなたは実際のSQLを投稿しましたが(効率的にする方法についてはBohemianの答えがあります)、私はあなたの問題を見ていません。 –

答えて

3

私は(存在する場合)あなたはまだインデックスを使用できるように、フィールドを変更ではなく、範囲の値を変更ないに傾斜させることだろう。

Select ... From ... WHERE dateField Between x - myNumber And y - myNumber 
+0

これは 'myNumber'が負の数なら問題を引き起こしますか? – ajreal

+0

@ajureal - 確かに。負の数を減算すると、時空の連続体が破壊される可能性があります。 –

+0

@ajreal:いいえ、これは同等の変換です。あなたは、それらの高校の数学レッスンが目的を持って参照してください。 –