VBで一定間隔のデータのみを抽出するには?

解決


ぷく  2004-10-12 20:02:06  No: 85970

はじめまして。
VB6.0 SP5を使用しております。

[日時]Fieldを見てちょうど10秒間隔(一定間隔)のデータのみを抽出する方法
について悩んでおります。

全データをループして、1レコード前の日時との間隔が10秒かどうか判断する。
という方法をとっていましたが、時間がかかりすぎていました。
それで、
Where条件で、日時 IN (Date1, Date2, Date3,…)
という方法に変えてみたのですが、あまり速度は向上しません。

良い方法を、どなたかご存知ないでしょうか。


岡田 之仁  2004-10-12 20:50:01  No: 85971

日時フィールドに実際に入っているデータの書式が解らない
ので、なんとも言えませんが・・・

10秒間隔のデータと言う部分ですが、差が10秒と言うのと、
秒の位が『x0』となっている、『ゼロ』のデータを取得する
と言うのに、読み替えたらいけないのでしょうか?

要は秒のデータを抽出して10との余りがゼロのデータと言う
ことです。

以上。


ぷく  2004-10-12 21:05:08  No: 85972

説明不足で申し訳ありません。

10秒だけではなく、
指定された間隔(30秒、1分、15分、1時間といった間隔)
でも抽出できるようにしたいのですが...。


nanashi  2004-10-12 21:29:39  No: 85973

データベースの種類は何ですか?
Access?
それと抽出条件は、指定時間との間隔が10秒単位とかそういうことで良いんでしょうか?

例えば2004/10/12 12:30:00との間隔が10秒単位のデータなら

Where((datediff("s", [日付], #2004/10/12 12:30:00) mod 10) = 0)

で取得出来ます。


nanashi  2004-10-12 21:30:27  No: 85974

Where((datediff("s", [日付], #2004/10/12 12:30:00#) mod 10) = 0)

後ろの#が抜けてました(^^;


ぷく  2004-10-12 23:28:17  No: 85975

nanashi様
お世話になります。
使用するデータベースは、SQLServerです。


ぷく  2004-10-13 01:05:11  No: 85976

nanashi様

Accessでは動きました!ありがとうございました!!

ただ、SQLServerでは構文エラーになってしまいます。
以下の構文です。

Where((DateDiff(second,日付,convert(datetime,'2004/10/12 12:30:00',102)) mod 10) = 0)


ぷく  2004-10-13 02:11:08  No: 85977

解決致しました!!

どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加