我正在创建一个自定义在线用户界面。 jsp页面有一个表单,用户可以从日历中选择日期(使用JavaScript制作),并指定事件发生的确切时间。
我的servlet读取表单数据,最终看起来像这样:
日期:2012年3月12日
时间:晚上7点。
需要将日期和时间存储在mysql数据库表中。我将列设置为DATETIME类型。
我想获取该列中的日期值,将它们与“当前日期+ 30分钟”进行比较,并仅显示符合该条件的事件。
1)如何将从表单发送的日期和时间的字符串值转换为DATETIME值以存储在数据库中?
2)如何将db中的日期/时间条目与当前日期和时间进行比较?
答案 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调用。