2012-05-11 4 views
0

すべて、SQLクエリは、日付とその他の条件との間のデータを除外します。

初めてのポスターはここにあります。私は日付範囲の間にデータを除外したいだけでなく、特定のコードを持つクエリを作成しようとしています。

Date: 

(substring(CAST(UTCBigintToUTCTime(starttime) as varchar(19)),0,11) not between '2012-05-08%' and '2012-05-10% 

ステータスコード:

からstatusCode NOT IN( '58'、 '59'))

私の文は、これらの両方の条件を満たしているデータを除外するためにどのように見えますか?私がしていることはすべて、その日付範囲のすべてとステータスコード範囲のすべてを除外します。

ありがとうございます。 SQL初心者ですが、学習:)。

答えて

0

あなたはそれをちょっと考えすぎて、必要以上に複雑に思っているようです。 これを複雑なものにすることは、特に負論理を使用すると、パフォーマンスが悪くなります。

どのようなものについて:あなたが使用しているデータベースを確認してください、またはNot

select * from myTable where starttime < '2012-05-08' and starttime > '2012-05-10' and statuscode < 58 and statuscode > 59 

正確にあなたのデータ型が何であるか - 少し、必要に応じて調整しますが、厄介な日付/文字列変換と 'から離れて滞在してみてください可能な限り条件はありません。

+0

GreyBeardedGeekさんの返信ありがとうございますが、これは5/8 - 5/10から何も除外しませんでしたか?私が必要とするのは、5/8と5/10からのデータを報告することですが、58または59ではなく、ステータスコードだけです。この範囲内でまだ考慮しなければならない多くのコードがあります。基本的に私が作成しているレポートは失敗報告ですが、私が実行していたいくつかのテストのためにその組み合わせを除外したいのは、報告する必要はありません。 – Payners

+0

上記のアプローチではちょっとした問題があります。比較の前に開始日時(日付時刻ではない)を必ず変換してください。それ以外の場合は、 '2012-05-10 09:30:00'よりも大きいので結果に '2012-05-10 09:30:00'が含まれます – SteveCav

0

この

select * from myTable where convert(date,starttime) not between '2012-05-08' and '2012-05-10' and statuscode not in (58,59) 

を試してみて、私に知らせてください。

関連する問題