• 締切済み

SQLServerでの日付関連に関する事

こんにちは、質問させてください。 今、以下の構成のテーブル(test_tbl)があるとします。 --------------------------- filed = type = size --------------------------- name = varchar = 512 hizuke = datetime = 8 address = varchar = 512 --------------------------- 今、ある期間に当てはまる人のデータを抽出するため 以下のSQL文を発行しています。 ------------------------------------ select, name, address, substring(convert(varchar, hizuke, 112), 1, 4) + '/' + substring(convert(varchar, hizuke, 112), 5, 2) + '/' + substring(convert(varchar, hizuke, 112), 7, 2) from test_tbl where substring(convert(varchar, hizuke, 112), 1, 4) + '/' + substring(convert(varchar, hizuke, 112), 5, 2) + '/' + substring(convert(varchar, hizuke, 112), 7, 2) between '1999/11/02' and '2003/02/16' ----------------------------------------------------- と記述しています。 このSQLだと関数などたくさん使用しており 時間がかかってしょうがありません。 ※特に日付関連の部分 なにかいいアドバイスがある方、宜しくお願い致します。

みんなの回答

  • driverII
  • ベストアンサー率27% (248/913)
回答No.2

プログラム上から利用しているのでしょうか・・・ 手で打っているのであれば、何の問題も発生しませんよね。 つまり'1999/11/01' and '2003/02/28'で。 プログラムから利用するのであれば、SQLを発行する前に '1999/11/01','2003/02/28'を生成する処理を入れるだけでしょう。 どの言語を使っているか知りませんが。 SQLでやるのであれば、ホスト変数などを使えばできると思いますよ。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

??? ただ単にhizukeと比較でいいのでは? select name, address, hizuke from test_tbl where hizuke between '1999/11/02' and '2003/02/16' なにか問題でも・・・

jyopper
質問者

補足

返信ありがとうございます。 上記でも問題はありませんが、この場合年月日の検索のみ適用できるようです。 検索対象期間を1999年11月から2003年2月にすると、 select name, address, hizuke from test_tbl where hizuke between '1999/11' and '2003/02' とすると正しいデータが返ってきません。

関連するQ&A