I got a very frustrated problem.. I cannot use the JPA save function to store correct datetime object of SQL, I got the following error:
com.microsoft.sqlserver.jdbc.SQLServerException: Conversion failed when converting date and/or time from character string.
There is my code:
In Controller:
import java.sql.Timestamp; @PostMapping("/record") public String updateRecord(@RequestParam("createDatetime") Timestamp createDatetime) { Date date = new Date(); Timestamp ts=new Timestamp(date.getTime()); Record record = new Record(); Record.setCreateDatetime(ts); recordService.save(record); }
In Entity:
private Timestamp createDatetime; @Column(name = "createDatetime") public Timestamp getCreateDatetime() { return createDatetime; } public void setCreateDatetime(Timestamp createDatetime) { this.createDatetime= createDatetime; }
Many thanks!!
Advertisement
Answer
I recomend you to use LocalDateTime
of modern java.time
. JPA automatically convert LocalDateTime
into database datetime
. To get current datetime use LocalDateTime.now()
.
private LocalDateTime createDatetime; @Column(name = "createDatetime") public LocalDateTime getCreateDatetime() { return createDatetime; }
You can take as @RequestParam
also
@PostMapping("/record") public String updateRecord(@RequestParam("createDatetime") LocalDateTime createDatetime) { ... }