【急ぎ】

SQLのWHERE節で使う条件で、以下をやりたい。
どういう文にしたらいいでしょう?

テーブルXの属性Aと属性B、どちらもdatetime型。
X.AがX.Bよりも早い時刻で、かつ、その差が5分(300秒)以内。

念のため、処理系はSQLServer2000(32bit)です。

質問が単純なので、正解3つくらいまでオープンしてやめます。

回答の条件
  • 1人3回まで
  • 登録:2006/10/02 13:43:47
  • 終了:2006/10/03 00:22:47

回答(2件)

id:fangoln No.1

fangoln回答回数20ベストアンサー獲得回数22006/10/02 14:13:02

ポイント100pt

この記述でどうでしょう


where X.A < X.B and X.B - X.A <= '00:05:00'

id:t-ueno

X.B - X.A <= '00:05:00'ですか・・・

ちょっと違うっぽいなーと思いつつやってみたところ、ダメでした。

X.B - X.Aの結果がなんかシリアル値みたいなのになりますね(って、こういうのが予想され、どう扱えばいいのか調べられない環境にいるので、ここで質問したのでした)。

なお、質問文は誤解をなくすために条件が2つのように見える書き方にしていますが、条件は1つでOKですよ。

この回答でも、andの後ろが成り立つならandの前の句は自動的に成り立ちますので。

っていうのは大嘘ですね。頭ボケてました。

ちゃんと動きました。

失礼しちゃったので、ポイントはずみます。すいませんでした。

2006/10/02 14:51:37
id:rikuzai No.2

りくっち回答回数1366ベストアンサー獲得回数1412006/10/02 14:16:27

ポイント100pt

WHERE (((テーブルX.属性A)<[テーブルX]![属性B]) AND ((DateAdd("s",300,[テーブルX]![属性A]))<[テーブルX]![属性B]))


これはどうでしょうか。

id:t-ueno

うまくいきません。

想定していないデータが大量にヒットします。

その後、上の間違いでうまくいっていないことが判明。

うまくいきました。

失礼しちゃったのでポイントはずみます。

2006/10/02 14:51:42
  • id:HISI
    DATEDIFF関数を使えばよろしいかと。

    WHERE X.A < X.B
    AND DATEDIFF(second,X.A,X.B) < 300

    ミリ秒以下は最初に両方切り捨てられてから計算されます、念のため。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません