【问题标题】:Truncated incorrect date value: '2020-02-03 12:51:16'截断不正确的日期值:'2020-02-03 12:51:16'
【发布时间】:2021-08-17 03:31:54
【问题描述】:

我正在尝试从表中删除很多行,但我收到了一个错误,任何人都知道这一点

DELETE l,l2 from 
logprocesoitem l 
JOIN logproceso l2 ON l2.id=l.logproceso_id  
where  STR_TO_DATE(l2.createat,'%Y-%m-%d')< DATE_SUB(CURDATE(), INTERVAL 14 MONTH);

【问题讨论】:

  • createat的数据类型是什么?

标签: mysql sql date


【解决方案1】:

您的createat 字段包含时间,但STR_TO_DATE() 中的格式仅允许日期。

STR_TO_DATE(l2.createat,'%Y-%m-%d %H:%i:%s')

如果您想忽略时间,请在结果上使用DATE() 函数:

DATE(STR_TO_DATE(l2.createat,'%Y-%m-%d %h:%i:%s'))

【讨论】:

  • Str_to_date 在这里似乎是多余的
  • 是的,因为这恰好是 MySQL 可以自动解析的格式。 OTOH,明确可以使代码更清晰。
【解决方案2】:

您正在指定格式'%Y-%m-%d',但您的数据是'%Y-%m-%d %H:%i:%s'。但是您根本不需要 STR_TO_DATE ;只是比较l2.createat &lt; DATE_SUB...

【讨论】:

    猜你喜欢
    • 2018-09-11
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    相关资源
    最近更新 更多