SQL Serverのテーブル
列名:時刻
データ型:datetime型
にて作成しています。
Accessにてテーブルをリンクさせ、SQL文にてアクセスするようにしているのですが、時刻が画面にて入力された開始時刻と終了時刻との範囲内のでーたを取得したいのです。
画面の開始時刻と終了時刻は書式を時刻(L)にて指定しています。
0:00:00 ~ 23:59:59
と画面にて指定した場合に
strWhere = "時刻 >= " & Me![開始]
strWhere = strWhere & " AND 時刻 <= " & Me![終了]
strWhere = strWhere & " ORDER BY 日付,時刻 ASC"
上記SQLでは、
行1:00の近くに無効な構文があります。
とメッセージが表示されエラーになります。
strWhere = "時刻 >= '" & Me![開始]
strWhere = strWhere & "' AND 時刻 <= '" & Me![終了]
strWhere = strWhere & "' ORDER BY 日付,時刻 ASC"
上記のように文字として扱うと対象のデータが抽出されません。
Dim StDate As Date ' 開始
Dim EdDate As Date ' 終了
StDate = Format(Me![開始], "hh:mm:ss")
EdDate = Format(Me![終了], "hh:mm:ss")
にてMe![開始]をStDate、Me![終了]をEdDateに変更してみましたが同じでした。
なにか、よい方法はないでしょうか?
No.5ベストアンサー
- 回答日時:
sqlサーバーには時刻だけの型はありません。
accessの書式でそう見えているだけで実際は日付と時刻を持っています。
ですから抽出時には下記のように変換しないといけません。
"convert(char(8),時刻,108) >= '" & Me![開始] & "'"
ありがとうございました。
無事データを抽出することができました。
Enterprise ManagerにてSQL Serverのテーブルの開くで全行を返すにて表示したときに、表示されなかったのでわかりませんでした。
本当にありがとうございました。
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ではないので参考程度ですが
No.3
- 回答日時:
#2です
「時刻」フィールドには時刻だけが入っているのか、日付+時刻が入っているのか?
#2では時刻だけが入っているとしたものです。だから 1889 の部分ができる。
日付+時刻であれば、考え方を変えなければなりません
この回答への補足
ありがとうございます。
テーブルには、日付、時刻、日付+時刻をもっております。
日付には、2004/12/01
時刻には、1:07:30
日付+時刻には、2004/12/01 1:07:30
と入っています。
時刻のみのときも、日付+時刻のときも、SQL ServerのテーブルをSQL文を使ってAccessからOPENしようとしたときにエラーになります。
範囲内のデータを取得したいので、日付+時刻にて読み込みたいと思っています。
よろしくお願いします。
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#
この辺りが参考にならないでしょうか?
この回答への補足
ありがとうございます。
#12/01/2004 0:00:00#
で試してみましたができませんでした。
:がダメみたいです。
SQL Serverをオープンするときにエラーになります。
とりあえず、日付までにしてSQL Serverに接続し、
データを読み込んでからIF文で判断するようにしました。
一種の逃げなので、良い方法があればよろしくお願いします。
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 …
この回答への補足
ありがとうございます。
早速行ってみましたが、やっぱりエラーになります。
行1:'#0:'の近くに無効な構文があります。
とメッセージが表示されました。
ウォッチ式にてstrWhereの中を見ると
時刻 >= #0:00:00#
となっています。
参考URLを見ましたがわかりません。
Nullの場合は、SQL文から外しているので、Nullの場合にはうまく動きます。
よろしくおねがいします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 指定した値以上の中で最小値を出したい 7 2022/10/24 21:12
- その他(Microsoft Office) エクセル 条件付き書式 日をまたぐ塗りつぶし 1 2023/01/13 18:00
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) エクセル2019の関数を教えてください。 8 2022/12/16 12:45
- Oracle sqlのwhere句で下記の条件にしたい場合どうなるでしょうか。 システム日付が開始日以上、終了日以 2 2022/03/25 21:22
- docomo(ドコモ) 通話録音が(最初から)自動的に始まるアプリは? 7 2023/01/16 15:53
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- 大学受験 大至急お願いします!! 明日共通テストを受ける者です。 私立文系の社会1科目受験です。 会場の開場時 2 2023/01/13 15:58
- その他(行事・イベント) 入場受付開始が11時 開始時刻が12時の場合 入場受付開始から遅れても よろしいのでしょうか お教え 1 2022/06/04 00:35
- Visual Basic(VBA) エクセル マクロ 指定日の指定時刻にプロシージャを実行 4 2022/04/17 16:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのAccessでDATE型のINSERT
-
SQLで日付の指定
-
ACCESS 日付の比較
-
nvarcharとdatetimeで作成され...
-
差し込み後、元データを変更し...
-
外部参照してるキーを主キーに...
-
フィルターかけた後、重複を除...
-
SELECT 文 GROUP での1件目を...
-
1、Rstudioで回帰直線を求める...
-
過剰なオブジェクト指向脳から...
-
カーソル0件の時にエラーを発生...
-
datetime型でNULL値を入れたい。
-
count集計の結果が0の場合でも...
-
INSERT文でフィールドの1つだ...
-
SQL文で、合計が0のレコードを...
-
inner joinをすると数がおかし...
-
for whichの使い方
-
エクセルで最後の文字だけ置き...
-
SQLにて特定の文字を除いた検索...
-
スペースを検索したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのAccessでDATE型のINSERT
-
クロス集計で、列を動的に
-
SQLサーバでの和暦(int)→西暦へ...
-
nvarcharとdatetimeで作成され...
-
MS-SQL datetime型から日付だけ...
-
select文で int を yyyy-mm-dd...
-
ACCESS 日付の比較
-
SQL文に時刻が含まれる場合
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
SELECT 文 GROUP での1件目を...
-
SQLで特定の項目の重複のみを排...
-
for whichの使い方
-
外部参照してるキーを主キーに...
-
SQLServerで文字列の末尾からあ...
-
重複していないレコードの抽出...
-
INSERT文でフィールドの1つだ...
-
SQL Date型の列から年月だけを...
-
SQL Left Join で重複を排除す...
おすすめ情報