转换日期格式以运行select语句

时间:2014-03-16 15:11:39

标签: mysql sql date jcalendar

对于我正在为学校写作的程序(在Java中),我必须在日期之间运行一个select语句来生成时间表。这将从SQL中选择数据并将其放入表中。 我的问题是数据类型日期的格式为' YYYY-MM-DD'我正在使用的JCalendar库将日期设置为MM / DD / YYYY,因此打破了它。有没有改变SQL格式?或者解决这个问题的简单方法?

这是我的选择查询:

'"SELECT * FROM `events` 
 WHERE `Date Of Event` >= '"+firstDate+"' AND `Date Of Event` <= '"+secondDate+"'"' 

其中第一个和最后一个日期的格式不同。

非常感谢任何帮助。

2 个答案:

答案 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;中传递日期常量。格式。在数据库中执行此操作可确保比较确实对日期起作用。