- - PR -
SQL Serverで日付範囲の問題ですが
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-08-17 23:33
こんばんは。
C#.NETを使って、SQLServerと連携しソフトウェア開発していますが、或る時間帯の中のデータを取り出すという機能実現したいのです。しかし、今、2005/01から2005/07からのデータを読み出し、2005/8/15のデータもでてきてしまいました。 プログラムとデータベースは、大体の構造が以下の通り: 1.SQLServerにストアドプロシージャを通して@Where、@Orderbyという二つのパラメータを指定する。 2.C#の中にそのプロシージャを使い、@Whereと@Orderbyに値を植入する。 where文は "where CONVERT(INT,LEFT(CONVERT(VARCHAR,date,112),6))>=200501 and where CONVERT(INT,LEFT(CONVERT(VARCHAR,date,112),6))<=200507" この文はSQLServerで問題なしです 以上日付に関する問題ですが、どうか御助けてください。 |
|
投稿日時: 2005-08-18 00:15
where CONVERT(INT,LEFT(CONVERT(VARCHAR,date,112),6))>=200501 and
where CONVERT(INT,LEFT(CONVERT(VARCHAR,date,112),6))<=200507 これって、whereが2回入っていますがソースのコピペのミスですよね。 ちなみに、ストアド単体ではうまく動いているのでしょうか? また、[date]の型はどうなっているんでしょうか? 余談ですが、 where LEFT(CONVERT(VARCHAR,date,112),6) between '200501' and '200507' という様に書いた方がシンプルかつ楽かと思います。 |
|
投稿日時: 2005-08-18 00:51
本題とは関係ないけど、テーブルの列値を加工するとインデックスが利用できなくなるのでやめたほうがいい。時系列で蓄積されていく大量のトランデータだと致命的。
たとえ入力値が 2005/01 と 2005/07 だったとしても、それを展開して where date between '2005/01/01' and '2005/07/31' となるように工夫しなさい。 |
1