4

我有实用日期,比如2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23

我想将该日期存储到mysql数据库表列日期中

我正在使用这些代码

String datevalue=request.getParameter("date");

这个日期值是这样打印的2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23

 String[] datetokens=datevalue.split(",");
java.sql.Date dt = java.sql.Date.valueOf(new String(datevalue));

在插入时间我得到这些错误

java.lang.IllegalArgumentException

给我建议如何解决该问题并存储在数据库中

4

7 回答 7

1

以下代码将打印每个日期。

String datevalue = "2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23";
        String[] datetokens = datevalue.split(", ");
        for (String each : datetokens) {
            java.sql.Date dt = java.sql.Date.valueOf(each);
            System.out.println(dt);
        }

您可以插入dt到数据库中。方法中的逗号 (,) 后面必须有一个空格split(如split(", "))。

于 2013-10-23T07:39:18.890 回答
1

您想使用日期格式对象来解析日期,例如SimpleDateFormat

String dateValuesString = request.getParameter("date");
String[] dateValueStrings = dateValuesString.split(",");
SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd");
for (String dateString : dateValueStrings) {
    Date date = sdf.parse(dateString); 
}
于 2013-10-23T06:58:14.397 回答
0

也可以这样尝试:-

String dateValuesString = request.getParameter("date");
String[] dateValueStrings = dateValuesString.split(",");
SimpleDateFormat myFormat = new SimpleDateFormat("yy-MM-dd");
for (String dateString : dateValueStrings) {
String reformattedStr = myFormat.format(dateString);
 System.out.println(reformattedStr);
}
于 2013-10-23T07:18:47.437 回答
0

我实际上会使用JODA来做你需要的事情;但是,SimpleDateFormat 或 JODA 可以解决问题。

于 2013-10-23T07:03:39.743 回答
0

在这种情况下:

  • 您传递了一个以逗号 (,) 分隔的日期值列表。
    String datevalue=request.getParameter("date");

  • 将所有日期拆分为包含每个日期值的字符串数组。
    String[] datetokens = datevalue.split(",");
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", dateValue);
    ...指定要解析的日期格式。

  • 现在您需要迭代(for 循环)来访问数组中的每个字符串。
    for(String dateValue : datetokens){
    Date date = sdf.parse(dateValue.trim());
    java.sql.Date sqlDate = new java.sql.Date(date.getTime());
    // 这里sqlDate为每次迭代将值插入 MySQL。
    }

  • 请不要忘记管理数据库连接并在插入时提供正确的查询。

  • 另外,处理ParseExceptionie。使用 try/catch 或 throws。

于 2013-10-23T07:34:05.310 回答
0

你应该使用STR_TO_DATE函数。在 INSERT 时尝试 typeCasting,如下所示:

INSERT INTO MY_TABLE VALUE (STR_TO_DATE('5/15/2012 8:06:26 AM', '%c/%e/%Y %r'))
于 2013-10-23T06:58:06.197 回答
0

java.lang.IllegalArgumentException是由于格式错误datetokens。它blank space 是因为split(",")。使用trim()方法

for(String token: datetokens){
java.sql.Date dt = java.sql.Date.valueOf(new String(token.trim()));
}
于 2013-10-23T07:04:35.887 回答