如何在 mysql 查询中插入日期?

Posted

技术标签:

【中文标题】如何在 mysql 查询中插入日期?【英文标题】:how can I insert date in mysql query? 【发布时间】:2017-04-28 00:15:18 【问题描述】:

我正在尝试将日期和时间保存在 datetime 类型 ('0000-00-00 00:00') 的属性中。我使用了以下代码。但是错误 - HTTP Status 500 - Internal Error 出现,因为 line 6 显示以下错误消息: java.time.format.DateTimeParseException: Text '2017-04-30 23:59 could not be parsed at index 10

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm");
LocalDateTime forDate = LocalDateTime.parse(newDate, formatter);
out.println(forDate);
ps = con.prepareStatement("INSERT INTO reminder_logs VALUES(NULL, ?, ?)");
ps.setInt(1, r_id);                        
ps.setDate(2, forDate);
i = ps.executeUpdate();

已编辑: 错误 - HTTP 状态 500 - 内部错误

我尝试使用setTimestamp(2, forDate) 而不是setDate(2, forDate),但随后出现错误提示 - 不兼容的类型:LocalDateTime 无法转换为 Timestamp。 我尝试从以下链接中获取参考,但没有任何帮助:

    java.time.format.DateTimeParseException: Text '2016-2-2' could not be parsed at index 5

    How to set current date and time using prepared statement?

    Unparseable date error on Java

我可以做些什么来解决这个错误? 我正在运行 java se 8。

【问题讨论】:

afaik,格式为yyyy-MM-dd HH:mm:ss 但我不想要秒,我该怎么办? :00? 但是 newDate 来自另一个 yyyy-MM-dd HH:mm 格式的 jsp 页面.. mysql datetime 字段包含秒数,所以按照@tadman 的建议进行操作,并将:00 附加到您的格式字符串中。 【参考方案1】:

java.time.format.DateTimeParseException 的原因是您在格式字符串中使用hh 而不是HH

From the docs

H       hour-of-day (0-23)          number            0
h       clock-hour-of-am-pm (1-12)  number            12

接下来你给出一个 24 小时格式的时间戳

// runnable example

String newDate = "2017-04-30 23:59";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm");
LocalDateTime forDate = LocalDateTime.parse(newDate, formatter);
System.out.println(forDate);

结果:

Exception in thread "main" java.time.format.DateTimeParseException: Text '2017-04-30 23:59' could not be parsed: Invalid value for ClockHourOfAmPm (valid values 1 - 12): 23
    at java.time.format.DateTimeFormatter.createError(Unknown Source)
    at java.time.format.DateTimeFormatter.parse(Unknown Source)
    at java.time.LocalDateTime.parse(Unknown Source)
    at _Scratchpad.SO.main(SO.java:12)
Caused by: java.time.DateTimeException: Invalid value for ClockHourOfAmPm (valid values 1 - 12): 23
....

这条痕迹清楚地表明时间超出了范围:

ClockHourOfAmPm 的值无效(有效值 1 - 12):23

【讨论】:

即使将DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm")修改为DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"),上图中的错误仍然存​​在。

以上是关于如何在 mysql 查询中插入日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何在postgresql插入查询中插入当前日期时间[重复]

如何使用php将日期插入mysql查询? [复制]

如何在 MySQL 中的两个日期之间获取特定日期

如何在 SQLite 表中插入日期和查询日期

如何在 Java 中将日期插入 MySQL 数据库表?

在MySQL中,如何插入日期类型数据?