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

解決


ぷく  2004-10-12 11:02:06  No: 85970  IP: [192.*.*.*]

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

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

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

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

編集 削除
岡田 之仁  2004-10-12 11:50:01  No: 85971  IP: [192.*.*.*]

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

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

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

以上。

編集 削除
ぷく  2004-10-12 12:05:08  No: 85972  IP: [192.*.*.*]

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

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

編集 削除
nanashi  2004-10-12 12:29:39  No: 85973  IP: [192.*.*.*]

データベースの種類は何ですか?
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 12:30:27  No: 85974  IP: [192.*.*.*]

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

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

編集 削除
ぷく  2004-10-12 14:28:17  No: 85975  IP: [192.*.*.*]

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

編集 削除
ぷく  2004-10-12 16:05:11  No: 85976  IP: [192.*.*.*]

nanashi様

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

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

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

編集 削除
ぷく  2004-10-12 17:11:08  No: 85977  IP: [192.*.*.*]

解決致しました!!

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

編集 削除