0

对于我正在为学校编写的程序(用 Java 编写),我必须在日期之间运行一个 select 语句来生成时间表。这会从 SQL 中选择数据并将其放入表中。我的问题是数据类型日期的格式为“YYYY-MM-DD”,而我使用的 JCalendar 库将日期指定为 MM/DD/YYYY,所以这会破坏它。无论如何改变SQL格式?或者一个简单的方法来解决这个问题?

这是我的选择查询:

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

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

任何帮助是极大的赞赏。

4

2 回答 2

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格式是因为它是显示日期的标准美国方式。

我还强烈建议您使用PreparedStatement并向其中添加参数而不是连接。

于 2014-03-16T15:15:08.840 回答
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)"'

您也可以在应用程序级别进行此转换。只需确保以“YYYY-MM-DD”格式传入日期常量即可。在数据库中执行此操作可确保比较确实在日期上有效。

于 2014-03-16T15:21:15.093 回答