首页 > 解决方案 > 错误代码:1525。使用 STR_TO_DATE 的 DATE 值不正确

问题描述

为什么我会收到此错误:

Error Code: 1525. Incorrect DATE value: '01-01-2017'

使用此查询时:

CREATE VIEW 2017Employees AS 
    SELECT EmployeeID 
    FROM contract 
    WHERE `Start` <= STR_TO_DATE('01-01-2017','%d-%m-%y') 
    AND DueFinish>= STR_TO_DATE('31-12-2017','%d-%m-%y');

我认为该函数STR_TO_DATE将字符串转换为日期。

标签: mysql

解决方案


您必须使用%Y而不是%y因为您使用的是四位数的年份:

CREATE VIEW 2017Employees AS 
SELECT EmployeeID 
FROM contract 
WHERE `Start` <= STR_TO_DATE('01-01-2017','%d-%m-%Y') 
 AND DueFinish>= STR_TO_DATE('31-12-2017','%d-%m-%Y');

您可以在以下文档中DATE_FORMAT找到所有可用的格式说明符和说明:

  • %Y- 年份,数字,四位数字
  • %y- 年份,数字(两位数)

推荐阅读