Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql接受日期列中的零个月!?请解释一下_Mysql_Database_Mysql 5.6_Rdms - Fatal编程技术网

Mysql接受日期列中的零个月!?请解释一下

Mysql接受日期列中的零个月!?请解释一下,mysql,database,mysql-5.6,rdms,Mysql,Database,Mysql 5.6,Rdms,MySQL 5.6-我们与一位开发人员进行了交谈,发现了一些非常奇怪的东西-在google中找不到任何关于它的信息: create temporary table md (dates date); insert into md select '2000-01-01'; -- result: 2000-01-01 insert into md select '2000-00-01'; -- result: 1999-12-01 ???? insert into md select '2000-00

MySQL 5.6-我们与一位开发人员进行了交谈,发现了一些非常奇怪的东西-在google中找不到任何关于它的信息:

create temporary table md (dates date);
insert into md select '2000-01-01'; -- result: 2000-01-01
insert into md select '2000-00-01'; -- result: 1999-12-01 ????
insert into md select '2000-00-00'; -- result: 1999-11-30 ????
insert into md select '2000-01-00'; -- result: 1999-12-31 ????
insert into md select '2000-13-01'; -- result: EXPECTED: SQL Error [1292] [22001]: Data truncation: Incorrect date value: '2000-13-01' for column 'dates' at row 1
insert into md select '2000-12-49'; -- result: EXPECTED: SQL Error [1292] [22001]: Data truncation: Incorrect date value: '2000-12-49' for column 'dates' at row 1
有人能解释一下吗

  • 为什么会这样?它应该抛出相同的数据问题错误imho
  • 文件
  • 这背后的确切逻辑是什么

    a) 00月上个月的同一天

    b) 上个月的最后一天

    c) 00-00前一个月的最后一天

  • 谢谢

    MySQL允许您将日期存储在日或月和日为零的位置。如果您想在
    日期
    列中存储出生日期,并且只知道部分日期,则此操作非常方便。要禁止日期中的零月或零日部分,请在日期中启用
    NO\u zero\u
    模式

    MySQL允许您将日期存储在日或月和日为零的位置。如果您想在
    日期
    列中存储出生日期,并且只知道部分日期,则此操作非常方便。要禁止日期中的零月或零日部分,请在日期中启用
    NO\u zero\u
    模式


    好发现!但这意味着‘2000-00-00’将存储为‘2000-00-00’,而不是‘1999-11-30’!此外,这违背了尼斯发现!但这意味着‘2000-00-00’将存储为‘2000-00-00’,而不是‘1999-11-30’!此外,这也违反了法律