1

我正在使用 java、eclipse 和 JDBC。

我有 3 个表(company, priceVolume, dividend),其中priceVolume包含一个名为 transdate 的字符串(股票值的日期分为几个不同的类别,即 openValue、CloseValue、averageValue...)。在我所有的表格中,主键是Ticker公司的股票代码)。

我还有一个名为 Industry 的公司属性,它告诉我股票来自哪个行业。

我有几天的时间,例如其中一个是 09.25.2012 到 02.28.2012,如果公司在选定的行业中,我想从 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 回答