- - PR -
SQLで指定した日付のデータを抽出する
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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 といった処理を作りました。 この上記の処理に指定した日付のデータを 取得する処理を追加したいのですがどうすればよいのか解りません。 どなたか、教えてください。 よろしくおねがいいたします。 | ||||
|
投稿日時: 2003-10-21 06:31
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-23 15:50
返答遅くなり申し訳ありません!回答ありがとうございます。
Jittaぬし サンの方法を試したのですが 値を取得しようとしてもNothingになってしまいます。 説明不足だったのでしょうか?解りづらい説明で申し訳ないです。 dt_Histに7月〜10月までの書込み日時が記入されているのですが 8月15日〜9月14日までのデータ抽出がしたいのです。 (というかなぜNothingになるんだろう?) | ||||
|
投稿日時: 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のように思います。 | ||||
|
投稿日時: 2003-10-24 10:51
??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