SQL Where子句日期范围

时间:2012-05-23 00:53:03

标签: java mysql jdbc

对我而言,对我来说是个新手。

我正在使用java,eclipse和JDBC。

大家好,我有3个表(companypriceVolumedividend),其中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。

我只是想看看如何做得更好。

2 个答案:

答案 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");