【问题标题】:JSF: Insert String Date Of Month-Day-Year Into MysqlJSF:将月-日-年的字符串日期插入Mysql
【发布时间】:2017-03-18 21:55:29
【问题描述】:

我的 java 蓝图中有日期,格式为月-日-年。 这是它的代码

public String getFormattedDate() {
    return new SimpleDateFormat("MM-dd-yyyy").format(dueDate);
}

我想在月-日-年使用相同的格式将此日期转换或插入到 mysql 准备语句中。但是有些我无法让它工作。 我有这样的东西

ps.setString(5, out.getFormattedDate());

当我运行我的代码时,我会收到此错误消息

com.mysql.jdbc.MysqlDataTruncation:数据截断:日期不正确 值:第 1 行的“DueDate”列的“04-01-2017”

这是我正在使用的插入语句,如果有帮助,我会考虑

String query = "INSERT INTO Checkout (FirstName, LastName, EmailAddress, BookTitle, DueDate) "
            + "VALUE (?, ?, ?, ?, ?)";

我希望有人可以帮助我。

【问题讨论】:

  • 请详细解释 "not working" 。你在 DB 中得到了什么?
  • 我在数据库中什么也得不到,因为它给了我 MysqlDataTruncation: Data truncation: error。

标签: mysql sql-date-functions


【解决方案1】:

MySQL 使用 'YYYY-MM-DD' 格式的 DATE 值。 MYSQL reference

也许你可以使用 STR_TO_DATE():

【讨论】:

    【解决方案2】:

    您正在将字符串值设置为日期值。 您的 DueDate 列是一个日期值,因此您必须将其更改为 varchar 或者当您执行选择时,您必须使用 DATE_FORMAT 函数。 所以你有两个选择:

    *使用 DATE_FORMAT 函数:

    SELECT DATE_FORMAT(DueDate,'%m/%d/%Y') AS 'FormatDate' FROM Checkout

    (此选择返回一个字符串值)

    *在 MySQL 中将 DueDate 更改为 varchar。

    希望我解决了您/其他人的问题。 (有点晚了)。

    【讨论】:

      猜你喜欢
      • 2021-10-13
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      相关资源
      最近更新 更多