对于我正在为学校写作的程序(在Java中),我必须在日期之间运行一个select语句来生成时间表。这将从SQL中选择数据并将其放入表中。 我的问题是数据类型日期的格式为' YYYY-MM-DD'我正在使用的JCalendar库将日期设置为MM / DD / YYYY,因此打破了它。有没有改变SQL格式?或者解决这个问题的简单方法?
这是我的选择查询:
'"SELECT * FROM `events`
WHERE `Date Of Event` >= '"+firstDate+"' AND `Date Of Event` <= '"+secondDate+"'"'
其中第一个和最后一个日期的格式不同。
非常感谢任何帮助。
答案 0 :(得分:2)
您可以使用SimpleDateFormat类将日期解析为Date对象,并使用另一个SimpleDateFormat对象将其解析为所需格式。
以下是如何操作的示例:
String sqlDate = "1992-02-16";
SimpleDateFormat sdfInput = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdfInput.parse(sqlDate);
SimpleDateFormat sdfResult = new SimpleDateFormat("MM-dd-yyyy");
String result = sdfResult.format(date);
数据库以yyyy-MM-dd
格式存储数据的原因是允许排序,而JCalendar
使用MM-dd-yyyy
格式,因为它是显示日期的标准美国方式。 / p>
我还强烈建议你使用PreparedStatement并将参数添加到它而不是连接。
答案 1 :(得分:0)
明确地说,这基本上是你想要的SQL:
SELECT *
FROM `events`
WHERE `Date Of Event` >= str_to_date('"+firstDate+"', '%m/%d/%Y') AND
`Date Of Event` <= str_to_date('"+secondDate+"', %m/%d/%Y)"'
您也可以在应用程序级别执行此转换。请确保在&#34; YYYY-MM-DD&#34;中传递日期常量。格式。在数据库中执行此操作可确保比较确实对日期起作用。