2011-12-19 7 views
2

私は少なくとも3歳であればデータベースからレコードを削除する必要があるプロジェクトを作成しています。VB.NETまたはDB2 SQLの現在の日付

私は日付を取得するためにDB2のSQLでこのようなものを持っている:私は

を変換していますなぜ

SELECT * FROM tableA 
WHERE ADD_DATE < CHAR(CURRENT DATE-3 YEARS) 

ADD_DATEが私のシステムでは文字として格納されているが、これは私がそれをすることも可能である知っています日付を取得し、私はSQLステートメントを呼び出すために使用している言語であるVB.netでフォーマットします。

私の質問は、日付を取得してSQL内のSELECT内で変換を実行する方が速いかどうかです。現在の日付を取得してVB.netで変換し、その日付をSQLステートメントVB.netは、比較する必要がある何千ものレコードがあるので、より良いと思っています。私はそれが一度だけ日付を取得し、それを一度変換するようにVBでそれを設定する必要がありますが、私はどのような種類のパフォーマンスがこれらのステートメントからそれぞれのヒットを確認していない。

ありがとうございます。

答えて

2

データベースへの呼び出しで日時を取得している場合は、クライアント側で取得してデータベースへのラウンドトリップを避ける方が速いでしょう。

サーバー側で1回のセットベース操作で日付を比較している場合、その時間差はごくわずかです。ループベースのもの(カーソルなど)をチェックすると、時間が無駄になります。

これはあなたには当てはまりませんが、将来参照するためにクライアントとデータベースサーバーが異なるタイムゾーンにある可能性を考慮してください。あなたのデータが生成される時間帯に基づいて、それを一方向または他の方法で行う方が安全かもしれません。

+0

答えに追加するには:クライアントの時間が間違っているとどうなりますか?それが問題になる場合(そして私はそれがいつではないかわからない)、サーバー時間を使用します。 – UnhandledExcepSean

0

VB.Netで「今」を行うのは、間違いなくデータベースを叩くよりも速くなります。

関連する問題