【问题标题】:STR_TO_DATE incorrect datetime mysqlSTR_TO_DATE 不正确的日期时间 mysql
【发布时间】:2016-12-23 16:56:34
【问题描述】:

我试图搜索很多关于这个的问题。但它似乎能说明关于引号使用的解决方案。

参考 : 1, 2, 3, 4

就我而言,

select STR_TO_DATE('17-08-2016 11:30:51 AM','%d/%m/%Y %h:%i:%s %p');

输出NULL.
而在INSERT 声明中:

INSERT INTO BILLING(BILL_NUMBER,BILLING_DATE)
VALUES ('1',STR_TO_DATE('17-08-2016 11:30:51 AM','%d/%m/%Y %h:%i:%s %p'));

它抛出错误:

错误代码:1411。日期时间值不正确:“17-08-2016 11:30:51 AM” 对于函数 str_to_date

注意:1. 日期格式是固定的 > '%d/%m/%Y %h:%i:%s %p'
2. 字符串格式也是固定的 > '17-08-2016 11:30:51 AM' 我是从 C# 服务中捕获的。

提前致谢!

【问题讨论】:

  • 用连字符替换/select STR_TO_DATE('17-08-2016 11:30:51 AM','%d-%m-%Y %h:%i:%s %p');
  • 日期格式,我得到的是通过服务。所以不能改
  • 我要求更改格式而不是日期。仔细看

标签: mysql datetime str-to-date


【解决方案1】:

您的格式与字符串不匹配。将斜杠更改为 -

select STR_TO_DATE('17-08-2016 11:30:51 AM','%d-%m-%Y %h:%i:%s %p');

【讨论】:

    【解决方案2】:

    由于服务本身的日期出错了。所以,服务需要改变:

    之前是通过billObj.BillingDate 类型的string

    改为:

    billObj.BillingDate = (DateTime.ParseExact(billObj.BillingDate, HotelApplication.AppCode.BusinessLayer.util.StaticDefinitions.appDateFormat, CultureInfo.InvariantCulture)).ToString();
    

    它成功了 :) 感谢所有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-15
      • 1970-01-01
      • 2017-03-11
      • 2015-10-06
      • 1970-01-01
      • 2017-09-17
      • 2012-08-25
      相关资源
      最近更新 更多