特定の期間の日付をSQLで検索するには?

解決


Delphi大好き  2010-04-28 12:22:20  No: 38359

procedure TForm4.Button1Click(Sender: TObject);
begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select * from 帳簿');
  Query1.SQL.Add(Format('WHERE (日付 = "%s")',
  [FormatDateTime('mm"/"dd"/"yyyy', DateTimePicker1.date)]
  ));
  Query1.SQL.Add(' AND ');
  Query1.SQL.Add(Format(' (日付 = "%s")',
  [FormatDateTime('mm"/"dd"/"yyyy', DateTimePicker2.date)]

  ));
  try
    query1.Open;
  except end;
end;

お世話になります。
いつも拝見させて貰っています。

過去レスを参考にして、上記のような事をしたいと思っています。
何とかここまでこぎ着けたのですが、範囲指定の仕方が判りません。
sqlのエラーメッセージも出ず、
チャートに出力してるのですが、白紙になってしまいます。

因みに「日付」は、Datatime型です。


  2010/04/20  〜  2010/10/27  を、
SQLで検索したいと思っています。

何とか、範囲指定する方法は無いでしょうか?

どうかよろしくお願いします。


HOta  2010-04-28 14:10:06  No: 38360

BETWEENを使えば出来ます。
SQLにselect * from 帳簿 WHERE 日付 BETWEEN :Hiduke1 AND Hiduke2
を設定して、
Query1.paramByName('Hiduke1').asDatetime = DateTimePicker1.date;
Query1.paramByName('Hiduke2').asDatetime = DateTimePicker2.date;
でOpenします。


どら  2010-04-28 19:19:44  No: 38361

>SQLにselect * from 帳簿 WHERE 日付 BETWEEN :Hiduke1 AND Hiduke2

Hiduke2 → :Hiduke2
Hiduke2の前にもコロンが必要ですね。


Delphi大好き  2010-04-29 05:09:33  No: 38362

Hotaさんありがとうございます!!
なんと、一発で成功しました^^。

一度BETWEENでチャレンジして失敗してたのですが、こんな方法もあるんですね。
Delphi搭載のSQLでも、奥が深いんですね・・・。
初めて見る書き方です^^。

DelphiのSQL解説本は1冊しか持ってないので、目から鱗です。

おかげ様で無事動作し、後は仕上げの簡単なSQL処理を入れるだけで完成です。

ありがとうございましたm(__”)m


Delphi大好き  2010-04-29 09:45:44  No: 38363

解決ボタン忘れました^^;

ソフトは無事完成しました。
改めてありがとうございましたm(__”)m


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

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






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