電子書籍の厳選無料作品が豊富!

こんにちは、質問させてください。

今、以下の構成のテーブル(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だと関数などたくさん使用しており
時間がかかってしょうがありません。
※特に日付関連の部分

なにかいいアドバイスがある方、宜しくお願い致します。

A 回答 (2件)

プログラム上から利用しているのでしょうか・・・



手で打っているのであれば、何の問題も発生しませんよね。
つまり'1999/11/01' and '2003/02/28'で。

プログラムから利用するのであれば、SQLを発行する前に
'1999/11/01','2003/02/28'を生成する処理を入れるだけでしょう。

どの言語を使っているか知りませんが。

SQLでやるのであれば、ホスト変数などを使えばできると思いますよ。
    • good
    • 0

???



ただ単にhizukeと比較でいいのでは?

select name, address, hizuke
from test_tbl
where
hizuke between '1999/11/02' and '2003/02/16'

なにか問題でも・・・

この回答への補足

返信ありがとうございます。

上記でも問題はありませんが、この場合年月日の検索のみ適用できるようです。
検索対象期間を1999年11月から2003年2月にすると、

select name, address, hizuke
from test_tbl
where
hizuke between '1999/11' and '2003/02'
とすると正しいデータが返ってきません。

補足日時:2003/02/25 11:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!