【问题标题】:MySql STR_TO_DATE not working in Stored ProcedureMySql STR_TO_DATE 在存储过程中不起作用
【发布时间】:2018-03-28 11:08:24
【问题描述】:

我想使用 Servlet 将日期从我的 JSP 添加到 mysql 数据库,如果我编写查询,则 STR_TO_DATE 可以正常插入,但如果我在存储过程中使用 STR_TO_DATE 它会给我“com.mysql.jdbc.MysqlDataTruncation: Data截断:不正确的日期值:“11-10-2015”列“DATE”在第 1 行”。

我的查询是:

INSERT INTO TABLENAME (DATE) VALUES (STR_TO_DATE('01/01/2010','%d-%m-%Y'));" 

有什么想法吗?

【问题讨论】:

  • 我知道,但我的问题是为什么函数 STR_TO_DATE 在正常查询中而不是在存储过程中工作????
  • 一个问号就够了。没必要发疯??????
  • SELECT STR_TO_DATE('01/01/2010','%d-%m-%Y'); 返回(null) SELECT STR_TO_DATE('01/01/2010','%d/%m/%Y'); 返回2010-01-01 你在STR_TO_DATE 中的格式是错误的

标签: java mysql database str-to-date


【解决方案1】:

函数 STR_TO_DATE 中的第二个参数使用了错误的格式。 您需要使用 %d/%m/%Y 而不是 %d-%m-%Y,因为您的日期格式是 / 分隔符。

INSERT INTO TABLENAME (DATE) VALUES (STR_TO_DATE('01/01/2010','%d/%m/%Y')); 

【讨论】:

    【解决方案2】:

    STR_TO_DATE 要求字符串的格式匹配:

    INSERT INTO TABLENAME (DATE) VALUES (STR_TO_DATE('01/01/2010','%d/%m/%Y'));
    

    有关详细信息,请参阅docs

    【讨论】:

    • 如果它解决了您的问题,请不要忘记接受答案;)
    • 您的回答导致缺少有关在插入命令中使用函数的信息。在 values 参数中使用函数是非常好的。看看它在这里工作:sqlfiddle.com/#!9/fd0d19/1
    • 请编辑它以删除该信息,以便我收回反对票。
    猜你喜欢
    • 2012-04-07
    • 1970-01-01
    • 2014-08-03
    • 2021-10-02
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    相关资源
    最近更新 更多