【问题标题】:Mysql Date Default insert in 1970-01-01Mysql Date 默认插入 1970-01-01
【发布时间】:2025-12-27 01:30:16
【问题描述】:

我正在插入一个空的date-field,但默认值1970-01-01 会自动插入。为什么?

我什至更改了Date 结构以允许null,将Default 设置为Null,仍然插入1970-01-01

【问题讨论】:

  • 您能告诉我们您要运行什么代码吗?从您的 cmets 来看,您的 PHP 部分有问题吗?

标签: mysql datefield


【解决方案1】:

这是MySQL的默认行为,在数据库中检查该字段可以为NULL。

检查这个:old post

【讨论】:

  • 但是不能插入空日期,我的代码有什么问题? $newdate = "NULL"; $model->生日 = $newdate;我尝试将空值插入日期字段并更改 mysql 以允许空值仍然插入 1970
  • @priyampmp1 很可能你在它周围插入 "" 或 '',这将导致 mysql 将其解释为字符串,因此仍然给你 1970,请参阅我的答案
【解决方案2】:

您很可能插入了一个空字符串。插入条目字符串将导致写入 1970-01-01。如果您不希望发生这种情况,您必须真正插入 NULL。

你想做的是:

INSERT INTO table
SET datefield = NULL

不是"NULL",而是NULL,否则它会将其读取为字符串而不是NULL

您也可以在插入时根本不设置该列,而它也将使用NULL

【讨论】:

  • 对不起我的愚蠢问题,$model->birthday = NULL,好的,我删除了引号但它仍然插入 1970-01-01
  • 您在 cmets 中输入的是 PHP 而不是 MySQL?也许编辑您的问题以显示您正在尝试的代码是什么。这可能对我们有很大帮助。