【问题标题】:#1292 - Incorrect date value: '0000-00-00' [duplicate]#1292 - 日期值不正确:'0000-00-00' [重复]
【发布时间】:2026-01-31 07:40:01
【问题描述】:

我引用了许多与我的标题相同的问题,但他们有不同的方法和不同的问题,所以这个问题不是重复的。

我有一个表,其中column fm_sctrdatedate 类型,并且具有默认值0000-00-00

通过网站插入工作正常,但是当我尝试通过phpmyadmin 插入任何值时,出现以下错误。

Mysql 版本是5.7.11。最近我们的服务器已经从mysqlnd 5.0.12升级到5.7.11

这里是查询

INSERT INTO `iavlif_fmp_clientquote` (`jm_cqid`, `fmsq_id`, `fmsg_id`, 
`fm_sctrdate`, `fm_sctrtime`, `fm_sctbaggage_weight`,     
`fm_sctfreight_weight`, `fm_sctpassenger`, `fm_sctinfant`, 
`fm_sctinfant_details`, `fm_sctinfant_dob`, `fmtp_id`, `fmtpi_id`,
`jmcnt_id`, `fm_name`, `fm_company`, `fm_email`, `fm_phone`, `fmts_id`,
`jmts_id`, `fm_pax_nbr`, `fm_hours_nbr`, `fmqt_id`, `fmtr_id`,
`fm_sctnotes`, `fm_locdepart`, `fm_locarrive`, `fm_sctconsignment_weight`,
`fm_sctconsignment_dimensions`, `fm_sctconsignment_desc`, `fm_sctdangerous`,
`fm_scturgent`, `fm_sctspecial_instructions`, `fm_sctquote_type`,
`fm_sctwork_type`, `fm_sctreoccuring`, `fm_sctaccommodation`, `fm_sctcar`,
`fm_recdate`, `fm_recenddate`, `fm_recfrequency`, `fm_rectime`,    
`fm_medical`, `fm_medical_details`, `fm_user_ip`, `fm_dang_details`,
`fm_sctsubstance`, `fm_sctpurchase_number`, `fm_role_id`, `fm_myrole_id`,
`jm_myrole_id`, `fm_sctwork_point`, `fm_locdepartarrive`, `fm_sctnbr`, 
`fm_dateCreated`, `fm_cc`, `fm_gl`, `fm_timeCreated`, `jm_qtid`, `jmtp_id`,
`jmtpi_id`, `jmsg_id`, `jms_id`, `jmsq_id`, `fms_id`, `fmcq_id`) VALUES
(NULL, '1', '1', '0000-00-00', '1', '1', '1', 'sdfasd', 'No',
'sdafdsafdsaf', 'dsfas', 'sdfasd', 'dsafds', '0', 'asdfds', 'sdfasd',
'sdfads', 'sdaf', 'sdaf', 'sdaf', '0', '0', '0', '1sadfasdsda', 'sdfadsf',
'as', 'as', 'as', 'asas', 'asd', 'No', 'No', 'adsfsd', 'eqwrqew', 'qewrqew',
'No', 'No', 'No', '0000-00-00', '0000-00-00', 'ewqr', 'qewrw', 'No', 'eqwr',
'ewqr', 'qewr', '', '', '', '', '', '', '', '0', '0000-00-00', '', '',
'00:00:00.000000', '', '', '', '', '', '', '', NULL)

我们在升级mysql后就开始面临这个问题

【问题讨论】:

  • 来自 phpmyadmin 的日期字段您是输入日期还是从默认日期选择器中选择?
  • 我将保留日期选择器。既不更改日期也不手动输入日期
  • 不是解决方案,但我建议使用NULL 而不是0000-00-00,因为这不是有效日期。
  • @Peter:将默认值设置为Null 时,我得到了#1067 - Invalid default value for 'fm_recdate'
  • 检查this

标签: mysql sql date phpmyadmin


【解决方案1】:

该错误是因为根据最新的 MYSQL 5.7 文档可以是严格模式的 sql 模式。

更多信息请阅读this.

希望对你有帮助。

【讨论】:

【解决方案2】:

您有两种选择:

  1. 从下拉列表中选择 NULL 将其保留为空白。
  2. 选择 CURRENT_TIMESTAMP 将当前日期时间设置为默认值。

【讨论】:

    【解决方案3】:

    在查看 MySQL 5.7 的更改后,MySql 停止支持日期/日期时间中的零值。

    在日期或日期时间中使用零是不正确的,只需使用null而不是零。

    【讨论】:

    • 是的,Mysql 默认停止使用零值。但是正如@KuKec 在评论中通过链接提到的那样,我们可以关闭严格模式并且可以使用零值。因此,如果您在答案中也添加此信息,我可以接受。
    最近更新 更多