Java - 比较通过表单提交的日期到存储在mysql db中的日期 - 如何?

时间:2012-03-13 02:37:46

标签: java mysql forms jsp datetime

我正在创建一个自定义在线用户界面。 jsp页面有一个表单,用户可以从日历中选择日期(使用JavaScript制作),并指定事件发生的确切时间。

我的servlet读取表单数据,最终看起来像这样:
日期:2012年3月12日 时间:晚上7点。

需要将日期和时间存储在mysql数据库表中。我将列设置为DATETIME类型。

我想获取该列中的日期值,将它们与“当前日期+ 30分钟”进行比较,并仅显示符合该条件的事件。

1)如何将从表单发送的日期和时间的字符串值转换为DATETIME值以存储在数据库中?

2)如何将db中的日期/时间条目与当前日期和时间进行比较?

2 个答案:

答案 0 :(得分:2)

要将String转换为日期,您可以使用SimpleDateFormat类。这有一些内置的方法可以将字符串转换为各种格式的日期。

例如:

    SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MMM-dd");
    Date mydate = fmt.parse("2012-Mar-04", 0);

现在你可以使用mydate来比较MySQL中的日期。

对于第二个问题,您可以通过实例化新日期获得当前系统时间。

    Date now = new Date();

然后使用它将MySQL表中的日期与简单的SQL语句进行比较。我假设您正在使用某种类型的Prepared语句。

   PreparedStatement currentEvents = con.prepareStatement("Select * from mytable where thedate = ?");
   currentEvents.setDate(1, mydate);
   result = currentEvents.executeQuery();

其中con是你的连接等等......

答案 1 :(得分:0)

要解析您的输入,请使用以下代码:

String dateInput = "2012-MAR-12";
String timeInput = "7:00 p.m.";

SimpleDateFormat f = new SimpleDateFormat("yyyy-MMM-ddh:mm a");
String s = dateInput + timeInput.replace(".", ""); // must remove the dots
Date d = f.parse(s);

获得日期后,您可以直接通过JDBC使用它。我会在您的查询中进行所有日期比较。我不明白你想做什么,但尝试这样的事情:

select * from table where datetime_col between ? and adddate(?, interval 30 minutes)

将数据对象作为参数传递给JDBC调用。