我正在使用java、eclipse和JDBC。
我有3个表(company
,priceVolume
,dividend
),其中priceVolume
包含一个名为transdate的字符串(股票价值的日期分为几个不同的类别,即openValue、CloseValue、averageValue…)。在我所有的表中,主键是Ticker
(公司的股票代码)。
我在公司里也有一个属性叫行业,它告诉我股票来自哪个行业。
我有一段时间,例如从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上。
我只想看看如何做得更好。
最佳答案
你可以投到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");