首页
学习
活动
专区
工具
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.7K50

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.9K30

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.4K50

使用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版本,默认宽松模式下直接到严格模式下会导致正常的程序代码报错,停止执行,影响业务。

5K41

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.2K20

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.3K30

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 中会默认在严格模式下禁用这种形式的日期存储,

9410

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”并且产生一个警告。

1.9K20

故障分析 | 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

2K31

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 命令集

的列,没有在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错误。如果不能将给定的值插入事务,则放弃该语句。

89810

MySQL的sql_mode解析与设置和MySQLdb._exceptions.OperationalError: (1055, “Expression

BY从句中 STRICT_TRANS_TABLES: 在该模式下,如果一个值不能插入一个事务,则中断当前的操作,对非事务不做任何限制 NO_ZERO_IN_DATE: 在严格模式...如果使用IGNORE选项,我们类似的日期插入0000-00-00’。在非严格模式,可以接受该日期,但会生成警告。...如果未给出该模式,被零除时MySQL返回NULL。如果用到INSERT IGNORE或UPDATE IGNOREMySQL生成被零除警告,但操作结果NULL。...当前数据库模式设置ANSI模式: mysql> set @@sql_mode=ANSI; 2、TRADITIONAL模式:严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入...如果不能将给定的值插入事务,则放弃该语句。对于非事务,如果值出现在单行语句或多行语句的第1行,则放弃该语句。

1.1K10
领券