对我而言,对我来说是个新手。
我正在使用java,eclipse和JDBC。
大家好,我有3个表(company
,priceVolume
,dividend
),其中priceVolume
包含一个名为transdate的字符串(日期股票价值分为几个不同的类别,IE.openValue,CloseValue,averageValue ...... )。在我的所有表格中,主键是Ticker
(公司的股票代码)。
我在公司中也有一个名为Industry的属性,它告诉我股票来自哪个行业。
我有一段时间,例如09.25.2001到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。
我只是想看看如何做得更好。
答案 0 :(得分: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");
答案 1 :(得分: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");