用户输入日期为 string
,但我需要将其插入到数据类型 DATE
的数据库列中。这就是我定义我的startDate
的方式我的变量 Event.java
类:
@Column(name = "start_date")
@Temporal(javax.persistence.TemporalType.DATE)
private Date startDate;
Note: The
Date
datatype is from the classjava.util.Date
我使用 Controller 中的以下代码将该数据作为字符串值获取:
@RequestMapping(value = "/addEvent", method = RequestMethod.POST)
public String addEvent(
//OTHER PARAMETERS
@RequestParam("startDate") String startDate,
//OTHER PARAMETERS
) {
//CODE TO MAP EVENT DATA TO THE ENTITY CLASS
eventDAO.insert(event);
return "redirect:/";
}
以上代码成功将事件插入数据库,但留下 start_date
栏目NULL
。如何将字符串值解析为 date
数据类型以便可插入 MySQL 数据库?
编辑:
我尝试添加以下内容来解析它,但它仍然插入 NULL
.
Date finalStartDate=null;
String startDateParser = startDate;
DateFormat format = new SimpleDateFormat("MM/dd/yyyy");
try{
finalStartDate = format.parse(startDateParser);
System.out.println(finalStartDate);
} catch(ParseException ex){
System.out.println(ex.getMessage());
}
Event event = new Event();
//MAPPING OTHER DATA
event.setStartDate(finalStartDate);
我在我的服务器中收到此消息:
Unparseable date: "2018-04-19"
最佳答案
本例中的具体错误是日期格式错误。您应该使用 yyyy-MM-dd
而不是 MM/dd/yyyy
来解析日期。
如果无法解析日期,null
会插入到数据库中,这样就可以了。这意味着日期格式错误。
这是一段代码,应该能够解析日期:
String startDateParser = "2018-04-19";
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date finalStartDate = null;
try {
finalStartDate = format.parse(startDateParser);
System.out.println(finalStartDate);
} catch (ParseException ex) {
System.out.println(ex.getMessage());
}
关于java - 如何将 String 转换为 java.util.date 以便使其可插入 "DATE"类型的 mysql 数据库列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49924149/