首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP & MySQL将9999-31-12插入到表中,结果为0000-00-00

问题描述:在使用PHP和MySQL插入日期数据9999-31-12到表中时,结果为0000-00-00。

解决方案:

  1. 数据库日期类型:首先,确保在MySQL数据库中,表的日期字段使用正确的日期类型,例如DATE、DATETIME或TIMESTAMP。这些类型可以正确存储日期和时间信息。
  2. 日期格式:在PHP中,使用日期函数将日期格式化为MySQL支持的格式。对于9999-31-12这个日期,它不是一个合法的日期,因为月份的范围是1到12,而日期的范围是1到31。所以,无法直接将9999-31-12插入到日期字段中。
  3. 日期校验:在插入日期之前,可以使用PHP的日期函数(如strtotime())对日期进行校验和转换。例如,可以检查日期是否合法,或者将9999-31-12转换为一个合法的日期。
  4. 错误处理:如果插入的日期不合法或转换失败,可以通过错误处理机制捕获并处理错误。可以使用PHP的try-catch语句或MySQL的错误处理机制来处理异常情况。
  5. 推荐的腾讯云产品:腾讯云提供了多种与云计算相关的产品和服务,包括云数据库MySQL、云服务器、云函数、人工智能等。这些产品可以帮助开发者构建和管理云计算应用。具体推荐的产品和产品介绍链接地址可以在腾讯云官方网站上查找。

总结: 要解决将9999-31-12插入到MySQL表中结果为0000-00-00的问题,需要确保数据库表的日期字段类型正确,对日期进行校验和转换,处理可能出现的错误,并可以考虑使用腾讯云提供的相关产品和服务来支持云计算应用的开发和管理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysql创建临时查询结果插入已有

我记得学数据库理论课老师说可以创建临时,不知道mysql有没有这样的功能呢?临时在内存之中,读取速度应该比视图快一些。然后还需要将查询的结果存储到临时。...下面是创建临时以及插入数据的例子,以供大家参考。...A、临时再断开于mysql的连接后系统会自动删除临时的数据,但是这只限于用下面语句建立的: 1)定义字段   CREATE TEMPORARY TABLE tmp_table (      ...2)直接查询结果导入临时   CREATE TEMPORARY TABLE tmp_table SELECT * FROM table_name B、另外mysql也允许你在内存中直接创建临时,...TABLE tmp_table (      name VARCHAR(10) NOT NULL,      value INTEGER NOT NULL   ) TYPE = HEAP 那如何查询的结果存入已有的

9.9K50
  • Mysql实现获取自增id插入其他

    现在有这样一个需求,就是我向A插入一条数据,id是自增的。...插入之后,还需要向B插入一条数据,但是B需要保存的数据要使用刚刚A自增后的id, 这个其实是一个比较常见的需求,就是两张之间的一个关联,如果用程序来执行也是很容易实现。...比如我就在用sql执行之后,获取A的id插入B 实现方式如下: insert into A (id,name,code) values (null, "zhagnsan", "zs"); // 注意...A的id要设置自增,给null值即可 set @id = @@IDENTITY; // 使用id变量保存刚刚自增生成的id insert into B (id,a_id,name) values...(null, @id, "lisi"); // 使用变量获取AId 上面是用自定义变量的形式进行保存的,如果你只是想查一下是多少,可以直接使用: select @@IDENTITY; 好了,如果对你有帮助

    4K30

    mysql实现获取自增id插入其他

    现在有这样一个需求,就是我向A插入一条数据,id是自增的。...插入之后,还需要向B插入一条数据,但是B需要保存的数据要使用刚刚A自增后的id, 这个其实是一个比较常见的需求,就是两张之间的一个关联,如果用程序来执行也是很容易实现。...比如我就在用sql执行之后,获取A的id插入B 实现方式如下: insert into A (id,name,code) values (null, "zhagnsan", "zs"); // 注意...A的id要设置自增,给null值即可 set @id = @@IDENTITY; // 使用id变量保存刚刚自增生成的id insert into B (id,a_id,name) values...(null, @id, "lisi"); // 使用变量获取AId 上面是用自定义变量的形式进行保存的,如果你只是想查一下是多少,可以直接使用: select @@IDENTITY; 好了,如果对你有帮助

    3.5K20

    【数据库】MySql的sql_mode模式说明

    什么是严格模式mysql5.7+的版本,sql_mode严格模式。比如必须给字段默认值,更新数据的长度必须符合限制等。...NO_TABLE_OPTIONS :不要在SHOW CREATE TABLE的输出打印MySQL专用选项(例如ENGINE)。...NO_ZERO_DATE :这个模式影响着插入的’0000-00-00’值是否作为合法的数值,这个结果和是否启用严格模式有关。...如果这个模式未启用,date的零部分被允许并且插入没有警告。如果这个模式启用,dates的零部分插入被作为“0000-00-00”并且产生一个警告。...举个例子,当’14:52:12.15’插入time(1)的时候,是插入’14:52:12.2’还是插入’14:52:12.1′当OFF时,进行四设五入,插入14:52:12.2;当ON时,舍弃多余的位数

    1.6K50

    MySQL或者MariaDB里面sql_mode的设置详解

    STRICT_TRANS_TABLES 等价于:STRICT_TRANS_TABLES 如果不能将给定的值插入事务,则放弃该语句。...全部sql_mode MySQL版本<=5.6.5 默认为空 可选值如下: 参数 含义及示例 ALLOW_INVALID_DATES 允许无效的日期插入数据库(无效的日期插入时候会有warning,但仍能插入...AND 5;结果0> SET sql_mode = 'HIGH_NOT_PRECEDENCE';> SELECT NOT 1 BETWEEN -5 AND 5;结果1 IGNORE_SPACE 函数名和括号...例如某个中有user这一列,而MySQL数据库又有user这个函数, user会被解释函数,如果想要选择user这一列,则需要引用。...对于STRICT_TRANS_TABLES,MySQL非法值转换为最接近该列的合法值并插入调整后的值。如果值丢失,MySQL在列插入隐式默认值。

    2.3K20

    使用MySQL这么久,你了解sql_mode吗?

    严格模式是 指 SQL_MODE 变量设置STRICT_TRANS_TABLES或STRICT_ALL_TABLES的一个或者两个同时设置。...当第一个行数据非法,事务和非事务都直接报错,不会有记录插入成功。...如果使用IGNORE选项,我们类似的日期插入'0000-00-00'。在非严格模式,可以接受该日期,但会生成警告。...如果未设置该模式,数据被零除时MySQL返回NULL。如果用到INSERT IGNORE或UPDATE IGNORE MySQL生成被零除警告,但操作结果NULL。...其实从自身的角度来看这个结果有一定历史原因,从5.6 升级5.7 版本 或者升级8.0版本,默认宽松模式下直接到严格模式下会导致正常的程序代码报错,停止执行,影响业务。

    5.4K41

    Mysql服务器SQL模式 (官方精译)

    STRICT_TRANS_TABLES 如果某个值无法插入事务,请中止该语句。对于非事务性,如果该值出现在单行语句或多行语句的第一行,则中止该语句。更多细节在本节后面给出。...默认情况下产生错误的一个例子是插入NULLNOT NULL列。默认情况下产生警告的一个示例是错误数据类型的值插入(例如字符串插入 'abc'整数列)。...期望的行为 MySQL 5.7.x版本除了5.7.45.7.7 MySQL 5.7.45.7.7 插入'0000-00-00',不会产生警告 NO_ZERO_DATE 未启用 严格模式未启用 插入'...期望的行为 MySQL 5.7.x版本除了5.7.45.7.7 MySQL 5.7.45.7.7 插入日期,不会产生警告 NO_ZERO_IN_DATE 未启用 严格模式未启用 插入'0000-00...应用程序修改为在MySQL 5.6和5.7语句产生相同结果的SQL模式下执行。 小费 TRADITIONALMySQL 5.6的SQL模式包括严格模式和三种弃用模式。

    3.4K30

    MySQLMySQL配置sql_mode的作用

    MySQL配置sql_mode的作用 不知道你有没有踫到过这种问题,在 MySQL8 默认的情况下,我们之前习惯的 DateTime 类型指定的 0000-00-00 这种格式是无法插入或者修改数据的...并且,MySQL 可以这些模式分别运用于不同的客户端,也就是说,它是有 SESSION 会话设置能力的一个系统变量。 如何查看当前系统的 sql_mode 呢?和查看系统变量是一样的。...此外,严格模式还会影响和修改的语句,也就是 CREATE 和 ALTER 语句。...有了一条 id 0 的数据,如果再次插入的话,就会报主键重复,现在 0 就会被当成一个正常的数字 0 ,而不会转化成为 null 的形式进行自动增长操作。...在转移或升级 MySQL8 之后,其实最常见的问题就是上面说过的日期问题,0格式日期这种形式其实是已经过时的方式了,也是不推荐的方式,所以在 MySQL8 中会默认在严格模式下禁用这种形式的日期存储,

    12310

    linux系统下phpmysql命令加入环境变量的方法

    在Linux CentOS系统上安装完phpMySQL后,为了使用方便,需要将phpmysql命令加到系统命令,如果在没有添加到环境变量之前,执行 “php -v”命令查看当前php版本信息时时,...则会提示命令不存在的错误,下面我们详细介绍一下在linux下phpmysql加入环境变量的方法(假 设phpmysql分别安装在/usr/local/webserver/php/和/usr/local.../webserver/mysql/)。...方法一:直接运行命令export PATH=$PATH:/usr/local/webserver/php/bin 和 export PATH=$PATH:/usr/local/webserver/mysql...方法二:执行vi ~/.bash_profile修改文件PATH一行,/usr/local/webserver/php/bin 和 /usr/local/webserver/mysql/bin 加入

    2K20

    MySQL sql_mode的坑及严格模式详解

    例如insert ignore和update ignore,这样的话零除操作插入空并发出警告。...NO_AUTO_VALUE_ON_ZERO模式会抑制这种行为,仅仅当插入null值才会生成下一个序列的自增值。这个模式是非常有用的当0值已经在的自增序列存储时。...例如,如果你dump这个并且重新reload它,mysql可能会生成新的值当导入数值0的值时,这样就会导致数据的不一致,启用这个模式在导入dumo出的文件之前可以解决这个不一致的问题。...NO_ZERO_DATE :这个模式影响着插入的’0000-00-00’值是否作为合法的数值,这个结果和是否启用严格模式有关。...如果这个模式未启用,date的零部分被允许并且插入没有警告。如果这个模式启用,dates的零部分插入被作为“0000-00-00”并且产生一个警告。

    2.5K20

    故障分析 | MySQL 迁移后 timestamp 列 cannot be null

    的第一个 TIMESTAMP 列,如果没有明确地用 NULL 属性,DEFAULT 属性或 ON UPDATE 属性声明,将自动用 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE...对于插入的行,如果没有为该列指定明确的值,那么该列将被分配'0000-00-00 00:00:00' ,并且不会发生警告。...对于列指定插入 NULL ,如果启用严格的 SQL mode ,其结果是单行插入报错,或者在禁用严格的 SQL mode 下,多行插入结果是'0000-00-00 00:00:00' 。...向该插入NULL值试试看: mysql> insert into time_off values (1,null); Query OK, 1 row affected (0.00 sec) mysql...那么在该参数下,向参数值 OFF 时创建的 time_off 里插入 null 值会有什么情况呢: mysql> insert into time_off values (3,null); ERROR

    2.1K31

    mysql 命令集

    的列,没有在GROUP BY中出现,那么认为这个SQL是不合法的,因为列不在GROUP BY从句中 STRICT_TRANS_TABLES 如果一个值不能插入一个事务,则中断当前的操作,对非事务不做任何限制...如果使用IGNORE选项,我们类似的日期插入'0000-00-00'。在非严格模式,可以接受该日期,但会生成警告。...如果用到INSERT IGNORE或UPDATE IGNOREMySQL生成被零除警告,但操作结果NULL NO_AUTO_CREATE_USER 防止GRANT自动创建新用户,除非还指定了密码。...对于本文开头中提到的错误,可以先把sql_mode设置ANSI模式,这样便可以插入数据,而对于除数0的结果的字段值,数据库将会用NULL值代替。...STRICT_TRANS_TABLES 严格模式,进行数据的严格校验,错误数据不能插入,报error错误。如果不能将给定的值插入事务,则放弃该语句。

    91610

    国产数据库兼容过程涉及的MySQL非严格模式

    ABC可以成功,插入结果AB 3) 非严格的数值插入:在非严格模式下,MySQL允许插入超出字段范围的数值,会自动进行范围调整(建议已开启此类严格模式) eg: TINYINT(默认最大127)...可以插入150,且插入后的值自动截断 127 4) 非严格的零值插入:在非严格模式下,MySQL允许插入字符串类型的值数值类型字段,会将非数值字符串转换为0 (建议已开启此类严格模式) eg:...例如可以字符串'123' 插入int类型,结果是123;'abc'插入int,结果是0 5) 非严格的分组查询:在非严格模式下,MySQL允许在GROUP BY查询中选择非聚合列,这可能导致不确定的结果...,MySQL对外键约束的检查较为宽松,可能会允许插入或更新关联字段不存在的值。...(建议已开启此类严格模式) eg: tb外键字段指向ta的主键,如果tb的外键字段插入的内容不存在于a时也可以写入成功 8) 非严格的除数0校验:在非严格模式下,MySQL允许除数0

    35520

    CentOS下phpmysql命令加入环境变量的几种方法

    Linux CentOS配置LAPM环境时,为了方便,phpmysql命令加到系统环境命令,下面我们记录几种在linux下phpmysql加入环境变量的方法。...如果在没有添加到环境变量之前,执行“php -v”命令查看当前php版本信息时时,则会提示命令不存在的错误,下面我们详细介绍一下在linux下phpmysql加入环境变量的方法。...假设phpmysql分别安装在/usr/local/webserver/php/和/usr/local/webserver/mysql/。...方法一: 直接运行命令export PATH=$PATH:/usr/local/webserver/php/bin 和 export PATH=$PATH:/usr/local/webserver/mysql...方法二: 执行vi ~/.bash_profile修改文件PATH一行,/usr/local/webserver/php/bin 和 /usr/local/webserver/mysql/bin 加入

    1.9K20
    领券