@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

SQLで指定した日付のデータを抽出する

1
投稿者投稿内容
まきす
会議室デビュー日: 2003/10/20
投稿数: 4
投稿日時: 2003-10-20 17:42
データの履歴をデータベースに登録しています。
テーブル名:T_Hist  フィールド名:i_CD, c_Name, dt_Hist

i_CDが"1"のデータ。日付で並び替えを行い、データを取得し表示する。

' レコード取得
sqlDa = New SqlClient.SqlDataAdapter("SELECT * FROM T_Hist", sqlCn)
sqlDa.Fill(dtSet, "T_Hist")
' データを取得する & 取得したレコードを日付で昇順
dtView = New DataView(dtSet.Tables("T_Hist"), _
"i_CD=1", "dt_Hist ASC", DataViewRowState.CurrentRows)
For i = 0 To dtView.Count - 1
' 発生時刻を取得する
strData = dtView(i)(2)
Next

といった処理を作りました。
この上記の処理に指定した日付のデータを
取得する処理を追加したいのですがどうすればよいのか解りません。
どなたか、教えてください。
よろしくおねがいいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-21 06:31
引用:

まきすさんの書き込み (2003-10-20 17:42) より:

テーブル名:T_Hist  フィールド名:i_CD, c_Name, dt_Hist

i_CDが"1"のデータ。日付で並び替えを行い、データを取得し表示する。

' レコード取得
sqlDa = New SqlClient.SqlDataAdapter("SELECT * FROM T_Hist", sqlCn)


sqlDa = New SqlClient.SqlDataAdapter( _
"SELECT i_CD, c_Name, dt_Hist FROM T_Hist WHERE i_CD = @icd ORDER BY dt_Hist" _
, sqlCn)
sqlDa.SelectCommand.Parameters.Add("icd", i_CDのデータが入っている変数)


こういうこと?
まきす
会議室デビュー日: 2003/10/20
投稿数: 4
投稿日時: 2003-10-23 15:50
返答遅くなり申し訳ありません!回答ありがとうございます。

Jittaぬし サンの方法を試したのですが
値を取得しようとしてもNothingになってしまいます。

説明不足だったのでしょうか?解りづらい説明で申し訳ないです。

dt_Histに7月〜10月までの書込み日時が記入されているのですが
8月15日〜9月14日までのデータ抽出がしたいのです。
(というかなぜNothingになるんだろう?)
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2003-10-23 15:58
おそらく日付を=で取得しようとして
日付はYYYY/MM/DD HH:MI:SS で比較してるから
一行も取得できないのでは?
sqlDa = New SqlClient.SqlDataAdapter( _
"SELECT i_CD, c_Name, dt_Hist FROM T_Hist WHERE i_CD > @icdFrom AND i_CD < @icdTo ORDER BY dt_Hist" _
, sqlCn)
のあとに
sqlDa.SelectCommand.Parameters.Add()
でバインドすればOKのように思います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-24 10:51
引用:

まきすさんの書き込み (2003-10-23 15:50) より:

値を取得しようとしてもNothingになってしまいます。

dt_Histに7月〜10月までの書込み日時が記入されているのですが
8月15日〜9月14日までのデータ抽出がしたいのです。
(というかなぜNothingになるんだろう?)


 ??i_cdが1のデータを、日付順に取り出すのでは?それで、SQL文にORDER BY句をつけて、日付順に取り出せるようにしてみたのですが??

 まず、プログラムで持っている日付の型と、データベース中の日付データが入っている列の型を確認してください。両方が「日付」または「日時」を表す型であることを確認してください。また、データベース中の型が「日時」の場合、プログラムでは「日」を指定するだけでなく、最初のものは「0時0分」、最後のものは「23時59分」という時間を明示的に設定してください。つまり、『8月15日〜9月14日』だと、「『8月15日0時0分』〜『9月14日23時59分』」です。

 この前提で、取り出すためのSQL文は、

SELECT i_CD, c_Name, dt_Hist FROM T_Hist
WHERE i_CD = @icd
AND dt_Hist BETWEEN @period1 AND @period2
ORDER BY dt_Hist

*@period1:開始日
*@period2:終了日

なお、BETWEEN演算子は、どちらか一方だけ指定することはできないので、どちらか一方のみ指定する場合があるなら、不等号を使ってください。
1

スキルアップ/キャリアアップ(JOB@IT)