1

Java、Eclipse、および JDBC を使用しています。

私は 3 つのテーブル ( companypriceVolumedividend)を持っています。その中priceVolumeには、transdate と呼ばれる文字列が含まれています (株式値の日付がいくつかの異なるカテゴリに分割されます。つまり、openValue、CloseValue、averageValue... )。私のすべてのテーブルで、主キーはTicker(会社の株価情報) です。

また、Industry という会社の属性もあり、株がどの業界のものかがわかります。

たとえば、2001 年 9 月 25 日から 2012 年 2 月 28 日までの期間があり、その会社が選択した業界に属している場合、priceVolume から値を取得したいと考えています。

私はこのクエリを持っていますが、このスパンとこのスパンのみを与えるために WHERE 句をどのように表現すればよいかわかりません。型が日付型だった場合、それを表現する方法を知っていると思います。ただし、現在、文字列としてはわかりません。また、データベースを読み取るだけで、データベースを制御することもできません。

ResultSet rsTickers = stat.executeQuery("SELECT Ticker, OpenValue, CloseValue,
TransDate FROM company NATURAL JOIN pricevolume WHERE industry = " + GivenIndustry + "
GROUP BY ticker");

私は現在、特定の業界に一致する業界のすべての行を提供し、プログラムでそれらを並べ替えるようにプログラムを設定しています(スパンにないすべての行を破棄します)。それは機能しますが、実際には効果がないと感じています。だから今、クエリを私の基準に合うtransDatesだけに制限したいと思います。

そして、私はそれをより良くする方法を見たいだけです.

4

2 に答える 2

2

このようにキャストしdatetimeて確認できます

ResultSet rsTickers = stat.executeQuery("SELECT Ticker, OpenValue, CloseValue,
TransDate FROM company NATURAL JOIN pricevolume WHERE industry = " + GivenIndustry + "
AND CAST(transDates AS DATETIME) BETWEEN '2001-9-25' AND '2012-2-28' 
GROUP BY ticker");
于 2012-05-23T00:59:53.853 に答える
2

BETWEEN次の句を追加します。

ResultSet rsTickers = stat.executeQuery("SELECT Ticker, OpenValue, CloseValue,
TransDate FROM company NATURAL JOIN pricevolume WHERE
transdate between ? and ? and 
industry = " + GivenIndustry + "
GROUP BY ticker");
于 2012-05-23T01:00:18.053 に答える