• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL文に時刻が含まれる場合)

SQL文に時刻が含まれる場合のデータ取得方法

このQ&Aのポイント
  • SQL Serverのテーブルの時刻列にて、画面の開始時刻と終了時刻の範囲内のデータを取得する方法を教えてください。
  • SQL文にて時刻が含まれる場合、時刻の範囲内のデータを取得する方法について教えてください。
  • AccessのテーブルをリンクしてSQL文にて時刻の範囲内のデータを取得する方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kikaida-
  • ベストアンサー率69% (37/53)
回答No.5

sqlサーバーには時刻だけの型はありません。 accessの書式でそう見えているだけで実際は日付と時刻を持っています。 ですから抽出時には下記のように変換しないといけません。 "convert(char(8),時刻,108) >= '" & Me![開始] & "'"

ayu134
質問者

お礼

ありがとうございました。 無事データを抽出することができました。 Enterprise ManagerにてSQL Serverのテーブルの開くで全行を返すにて表示したときに、表示されなかったのでわかりませんでした。 本当にありがとうございました。

その他の回答 (4)

noname#182251
noname#182251
回答No.4

SQL Serverに接続して試験できる環境にありません(^^; で、取り敢えず ADO で MDB に接続して試験しました WHERE (((DownLoadLog.DownLoadDateTime)>#1/23/2005 8:0:0# And (DownLoadLog.DownLoadDateTime)<#1/23/2005 9:0:0#)); のような書き方はエラーになります。これを WHERE (((DownLoadLog.DownLoadDateTime)>38375.33333333333333333333333333333333 And (DownLoadLog.DownLoadDateTime)<38375.375)); と数値で範囲指定したところ 1月23日8時~9時のデータが抽出できました。 要するに整数部が「年月日」小数部が「時分秒」です。 あくまでもSQL Serverではないので参考程度ですが

noname#182251
noname#182251
回答No.3

#2です 「時刻」フィールドには時刻だけが入っているのか、日付+時刻が入っているのか? #2では時刻だけが入っているとしたものです。だから 1889 の部分ができる。 日付+時刻であれば、考え方を変えなければなりません

ayu134
質問者

補足

ありがとうございます。 テーブルには、日付、時刻、日付+時刻をもっております。 日付には、2004/12/01 時刻には、1:07:30 日付+時刻には、2004/12/01 1:07:30 と入っています。 時刻のみのときも、日付+時刻のときも、SQL ServerのテーブルをSQL文を使ってAccessからOPENしようとしたときにエラーになります。 範囲内のデータを取得したいので、日付+時刻にて読み込みたいと思っています。 よろしくお願いします。

noname#182251
noname#182251
回答No.2

Acsess2000 が作るSQL文を参照してみました。 クエリーに条件を >#0:00:00# And <#23:59:59# と入れると SELECT DownLoadLog.xTime, DownLoadLog.LogID FROM DownLoadLog WHERE (((DownLoadLog.xTime)>#12/30/1899# And (DownLoadLog.xTime)<#12/30/1899 23:59:59#)); ちょっと余計なものがあるのはご勘弁下さい(^^; ともかく <#12/30/1899 23:59:59# この辺りが参考にならないでしょうか?

ayu134
質問者

補足

ありがとうございます。 #12/01/2004 0:00:00# で試してみましたができませんでした。 :がダメみたいです。 SQL Serverをオープンするときにエラーになります。 とりあえず、日付までにしてSQL Serverに接続し、 データを読み込んでからIF文で判断するようにしました。 一種の逃げなので、良い方法があればよろしくお願いします。

  • toboten
  • ベストアンサー率0% (0/1)
回答No.1

AccessではWhere条件で時刻・日付のデータを使用する場合は値の前後に#が必要だと思います。 ですから strWhere = "時刻 >= " & Me![開始] strWhere = strWhere & " AND 時刻 <= " & Me![終了] strWhere = strWhere & " ORDER BY 日付,時刻 ASC" を strWhere = "時刻 >= #" & Me![開始] & "# " strWhere = strWhere & " AND 時刻 <= #" & Me![終了] & "# " strWhere = strWhere & " ORDER BY 日付,時刻 ASC" とすれば良いのではないでしょうか? 実際に作成したわけでは無いので、何かありましたら補足をお願いします。<(_ _)> 参考までに、下記のURLで時刻の扱いについて記述してあります。

参考URL:
http://www.accessclub.jp/bbs3/0067/superbeg25196-2.html
ayu134
質問者

補足

ありがとうございます。 早速行ってみましたが、やっぱりエラーになります。 行1:'#0:'の近くに無効な構文があります。 とメッセージが表示されました。 ウォッチ式にてstrWhereの中を見ると 時刻 >= #0:00:00# となっています。 参考URLを見ましたがわかりません。 Nullの場合は、SQL文から外しているので、Nullの場合にはうまく動きます。 よろしくおねがいします。

関連するQ&A