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

如何防止PHP将带有0000-00-00值的DateTime对象转换为-0001-11-30

防止PHP将带有0000-00-00值的DateTime对象转换为-0001-11-30的方法如下:

  1. 在创建DateTime对象时,使用DateTime::createFromFormat()方法,并指定输入格式。这样,如果输入的日期是0000-00-00,则可以避免自动转换为-0001-11-30。
代码语言:php
复制
$date = DateTime::createFromFormat('Y-m-d', '0000-00-00');
  1. 在创建DateTime对象后,可以使用DateTime::setDate()方法来设置日期。这样,如果输入的日期是0000-00-00,则可以避免自动转换为-0001-11-30。
代码语言:php
复制
$date = new DateTime();
$date->setDate(0, 0, 0);
  1. 在创建DateTime对象后,可以使用DateTime::setTimestamp()方法来设置时间戳。这样,如果输入的日期是0000-00-00,则可以避免自动转换为-0001-11-30。
代码语言:php
复制
$date = new DateTime();
$date->setTimestamp(0);
  1. 在创建DateTime对象后,可以使用DateTime::setTime()方法来设置时间。这样,如果输入的日期是0000-00-00,则可以避免自动转换为-0001-11-30。
代码语言:php
复制
$date = new DateTime();
$date->setTime(0, 0, 0);
  1. 在创建DateTime对象后,可以使用DateTime::setTimezone()方法来设置时区。这样,如果输入的日期是0000-00-00,则可以避免自动转换为-0001-11-30。
代码语言:php
复制
$date = new DateTime();
$date->setTimezone(new DateTimeZone('UTC'));

总之,要防止PHP将带有0000-00-00值的DateTime对象转换为-0001-11-30,可以使用上述方法来创建和设置日期时间对象。

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

相关·内容

迁移 valine 评论数据至 wordpress 数据库

(ctrl+enter 或 \n)替换为 },+换行符,最后使用 [] 所有对象包裹即可。...),这里我是写了个简单 php 文件来读取 json 文件并遍历获取每个对象对应文章 id 后再写入 json 进行新增(很傻,而且速度不快),其实这里可以直接在 phpmyadmin 中使用 mysql...> 完成上述操作后,应该能在wp根目录看到生成 output.json 文件,打开会发现每条 json 对象已经新增对应 comment_post_ID 文章id对象;再之后 output.json...($utc_date)) 转换为普通日期格式 Y-m-d H:i:s 后再导入到 sql 文件,参考上方UTC时间格式化)(⚠️注意:若导入时候数据映射步骤显示不全,则表示 json 对象首行中未包含缺失数据...key,导入数据首行必须包含所有所需字段(包括””空),否则导入后缺失该字段 value ) 执行下方 sql 语句通过对比 pid 与 objectId comment_parent_ID

11600

MySQL 8.0中DATE,DATETIME和 TIMESTAMP类型和5.7之间差异

后续文章会进行讲解; MySQLTIMESTAMP从当前时区转换为UTC以进行存储,然后从UTC转换为当前时区以进行检索。(对于其他类型,例如DATETIME。不会发生这种情况。)...从MySQL8.0.22开始,插入月份、日 部分或两者都不能为零,这是强制执行,不管服务器SQL模式如何设置。...此示例演示如何使用不同时区设置将带有时区偏移datetime插入TIMESTAMP和datetime列,然后检索它们: mysql>CREATE TABLE ts ( -> id...如果SQL模式允许此转换,则将无效日期、日期时间或时间戳换为相应类型“零”(’0000-00-00’或’0000-00-00 00:00:00’)。...* 服务器要求月份和日期有效,而不仅仅是分别在1到12和1到31范围内。禁用严格模式后,无效日期(例如) ‘2004-04-31’换为0000-00-00’并生成警告。

6.8K51
  • 【小家SQL】MySql数据类型---日期时间类型使用(含datetime和timestamp区别) 0000-00-00 00:00:00问题解释

    虽然,小时范围是0~~23,但是为了表示某种特殊需要时间间隔,Time类型范围扩大了。而且还支持了负值。...如果输入0或者‘0’,那么TIME类型会转换为0000:00:00。 ‘D HH:MM:SS’格式字符串表示。其中,D表示天数,取值范围是0~~34。保存时,小时等于(D*24+HH)。...举个例子,输入’2011.3.8‘,date类型换为2011-03-08。...MySQL中以‘YYYY-MM-DD HH:MM:SS’形式来显示dateTime类型。...如果插入时间比这个大,将会数据库插入0000-00-00 00:00:00。所以需要时间范围比较大,还是选择dateTime类型比较安全。 MySQL中如何表示当前时间?

    7.1K20

    【Mysql】The DATE, DATETIME, and TIMESTAMP Types

    本节介绍它们特点、相似之处和不同之处。MySQL以几种格式识别DATE、DATETIME和TIMESTAMP,在第9.1.3节,"日期和时间字面"中描述。...如果 SQL 模式允许转换,无效 DATE、DATETIME 或 TIMESTAMP 会被转换为相应类型 "零 "('0000-00-00' 或 '0000-00-00 00:00:00')。...CAST()检索时,可以 TIMESTAMP 换为 UTC DATETIME ,如下所示:mysql> SELECT col, > CAST(col AT TIME ZONE...The value '10:45:15' is converted to '0000-00-00' because '45' is not a valid month.'10:45:15'被转换为'0000...禁用严格模式后,**诸如`'2004-04-31'`之类无效日期会被转换为`'0000-00-00'`**,并产生警告。启用严格模式后,无效日期会产生错误。

    36530

    MySQL时间类型差异

    文章目录[隐藏] 时间格式化 DATETIME TIMESTAMP DATE TIME YEAR 日期时间类型 占用空间 日期格式 最小 最大表示 DATETIME 8 bytes YYYY-MM-DD...如果实际应用中有这样需求,就可以使用 DATETIME 类型。 DATETIME列可以设置为多个,默认可为null,可以手动设置其DATETIME列不可设定默认。...DATETIME列可以变相设定默认,比如通过触发器、或者在插入数据时候,DATETIME字段设置为now(),这样可以做到了,尤其是后者,在程序开发中常常用到。...当插入日期时,会先转换为本地时区后再存放;当查询日期时,会将日期转换为本地时区后再显示。所以不同时区的人看到同一时间是 不一样。...如果表中有第二个 TIMESTAMP 列,则默认设置为0000-00-00 00:00:00。 TIMESTAMP 属性受 Mysql 版本和服务器 SQLMode 影响较大。

    2.6K20

    Java中时间和日期(四):与java8时间API有关一些总结和补充

    实现类不可变性要遵守如下五条规则: 1.不要提供任何会修改对象状态方法(set方法)。 2.保证类不会被扩展。这样可以防止粗心或者恶意子类假装对象状态已经改变,从而破坏该类不可变行为。...3.声明所有的域都是final。通过系统强制方式可以清楚地表明你意图。 4.声明所有的域都为私有的。这样可以防止客户端获得访问被域引用可变对象权限,井防止客户端直接修改这些对象。...2.java8新版本时间如何存储到mysql 我们首先需要对mysql所支持时间类型进行梳理: 日期时间类型 占用空间 日期格式 最小 最大表示 DATETIME 8 bytes YYYY-MM-DD...因此很多博客上建议Instant转换为java.sql.Date方案实际上并不建议使用。 我们可以看看stackoverflow上关于Instant to mysql问题。...How to store a Java Instant in a MySQL database 正确回答解释到,我们无法Instant纳秒压缩到mysql数据库中DateTime和timeStamp

    73720

    MySQL中日期时间类型与格式化「建议收藏」

    【1】MySQL中日期时间类型 MySQL中常用几种时间类型有:date、datetime、time、year、timestamp 数据类型 占用字节 最小 最大表示 date 4 1000...-01-01 9999-12-31 0000-00-00 datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00: 00...但是有零0000-00-00 00:00:00; date:日期,就是datetimedate部分; time:时间(段),指定某个区间之间,从-时间到+时间(有负时间表示); timestamp...`work_time` datetime(2) DEFAULT NULL COMMENT '清收时间', # datetime(n)中n最大为6 `work_time` datetime(6) DEFAULT...,4 位,与 %V 使用 %x 年,其中星期一是周第一天,4 位,与 %v 使用 %Y 年,4 位 %y 年,2 位 ---- ③ str_to_date()函数 字符串转换为date: str_to_date

    6.1K40

    导入数据库时报错1067 – Invalid default value for ‘field’

    ,comment_date这个字段默认是无效,这个问题有些令我不解(我疑问:WordPress能建表成功,为什么会出现默认无效情况呢),后来突然想起我在yii主题成形时候,对运行环境进行过一次升级...,PHP从5.6升级到了7.2,Apache从2.2升级到了2.4,MySQL从5.6升级到了5.7,会不会是因为MySQL升级导致呢(因为MySQL升级没有进行数据重新导入,而是沿用了5.6数据文件...如果是MySQL升级导致问题,那么是什么原因呢,错误报告是默认无效,也就是说默认是被限制,那么先检查一下表结构: mysql> DESC wp_comments; +-------------...| NO | | 0000-00-00 00:00:00 | | | comment_date_gmt | datetime...| +-----------+ 1 row in set (0.01 sec) 从上面的查询结果我们可以看到comment_date默认0000-00-00 00:00:00,数据类型是datetime

    1K40

    mysql timestamp

    这个语句含义,a字段默认是CURRENT_TIMESTAMP,当纪录更新时候,自动a字段设置为 CURRENT_TIMESTAMP。...,不用非必需为CURRENT_TIMESTAMP) (2.2)DATETIME 1、DATETIME列可以设置为多个,默认可为null,可以手动设置其。...2、DATETIME列不可设定默认,这是很多人煞费苦心研究成果,呵呵!...(其实是可以 8.0亲测,5.7也可以) 3、DATETIME列可以变相设定默认,比如通过触发器、或者在插入数据时候,DATETIME字段设置为now(),这样可以做到了,尤其是后者,在程序开发中常常用到...(2.4)日期格式转换 1、字符串日期 select STR_TO_DATE(‘2010-03-03 16:41:16′, ‘%Y-%m-%d %H:%i:%s’) 2、日期字符串 select

    1.7K20

    耳熟能详消息队列你如何用,应用在哪些场景?

    那如果遇到这些问题,如何保证系统能够正常有效运行,我们该如何去设计,如何去处理呢?这个时候我们就要用到消息队列来处理这类问题。可以说消息队列是一个中间件,用这种中间件来分流与解压各种并发带来压力。...(100) NOT NULL COMMENT '用户地址', `created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT...'订单创建时间', `updated_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '物流系统处理完成时间',...我们也用一个案例来了解了解:使用RedisList类型实现秒杀。 我们会用到redis这些函数: *RPUSH/RPUSHX:插入到链表尾部。...处理思路是 使用brpop 命令阻塞处理temp\_queue这个队列中,如果能获取到""对应"",说明RedisPushQueue执行失败了,还lpush到push\_queue中,以备从新处理

    58810

    MySQL关于日期为零处理

    前言: 前面文章我们介绍过日期和时间字段查询方法,最近遇到日期为零问题。原来了解过和 sql_mode 参数设置有关,但还不是特别清楚,本篇文章探究下MySQL怎么处理日期为零问题。...1.问题描述 这里我们说日期为零是指年、月、日为零,即'0000-00-00'。...显然,这是不合法日期,但由于设计问题或历史遗留问题,有时候数据库中有类似日期为零数据,默认情况下插入零值日期会报错,可以通过修改参数sql_mode模式来避免该问题。...下面我们给出这两个变量作用并做下具体测试。 NO_ZERO_DATE模式影响服务端是否允许 '0000-00-00' 作为有效日期。其效果还取决于sql_mode是否启用了严格模式。...除非同时带有IGNORE,对于 INSERT IGNORE和UPDATE IGNORE,'0000-00-00'则允许插入但是会产生警告。

    4.4K40

    MySQL关于时间设置注意事项

    下面是容易忽略内容: TIMESTAMP保存数据方式: MySQLTIMESTAMP从当前时区转换为UTC进行存储,并从UTC返回到当前时区进行检索。...(这不适用于其他类型,比如DATETIME。)默认情况下,每个连接的当前时区是服务器时间。时区可以在每个连接基础上设置。只要时区设置保持不变,就会返回所存储相同。...对于STRICT_TRANS_TABLES, MySQL一个无效换为最接近有效,然后插入调整后。如果缺少一个,MySQL将为列数据类型插入隐式默认。...如果没有启用严格SQL模式,则使用默认隐式0000-00-00 00:00:00’声明该列,并出现警告。...时间戳列将从会话时区转换为UTC用于存储,从UTC转换为会话时区用于检索。 会话时区设置不影响UTC_TIMESTAMP()等函数显示,也不影响DATE、time或DATETIME列中

    1.9K20

    【MySQL笔记】数字类型、时间和日期类型、字符串类型

    ---- 文章目录 前言 数字类型 整数类型 为字段设置零填充(ZEROFILL) 浮点数类型 定点数类型 BIT类型 如何选择数据类型 时间和日期类型 YEAR类型 DATE类型 TIME类型 DATETIME...2、使用两位字符串表示为'00'~'99',其中’00’~'69’会被转换为2000 ~2069YEAR,‘70’ ~ '99’会被转换为1970 ~ 1999YEAR。...3、使用两位数字表示为1 ~ 99,其中1~6’会被转换为2001 ~2069YEAR,70 ~ 99会被转换为1970 ~ 1999YEAR。...其中’00’ ~'69’会被转换为2000 ~2069YEAR,‘70’ ~ '99’会被转换为1970 ~ 1999YEAR。...JSON是一种轻量级数据交换格式,有JavaScript语言发展而来,其本质是一个字符串。MySQL中JSON类型常见表现方式有JSON数组和JSON对象

    4K20

    PHP7-1:从0开始入门学习

    我们一直做是接口接收处理,不了解如何制作接口? 想要开始学习制作网站api或者app api,那么面临着就是选择 后端语言 ? 我前段时间做过一个调研: 前端程序员该如何选择后端语言?...php // 时间 // 设置中国时区 date_default_timezone_set('PRC'); // 时间时间戳 // 1583843402 数据库存储使用,可以存储ISO格式 $sjc..."; // 时间戳转换为ISO格式时间 2020-03-10 12:30:02 echo date('Y-m-d H:i:s',$sjc)."..."; // 加了一年 // DateTime()类 使用 $nowTime = new DateTime(); // 实例化DateTime 对象是获取的当前时间 // 把当前时间转换为时间戳..."; 以上是PHP7 基础语法,通过本章学习,可以对PHP有大体认识。本章有的语法没有介绍到,学习过其他语言的话,很快会上手

    2K30

    在 MySQL 中处理日期和时间(一)

    下表总结了每种类型: 本文其余部分更详细地介绍 DATE、TIME 和 DATETIME 类型,而下一篇文章重点介绍另外两种类型。...此外,当禁用严格模式(Strict Mode)时,MySQL 会将任何无效日期(例如 2015-02-30)转换为零日期 0000-00-00。...当你从 DATETIME 列查询数据时,MySQL 会以相同 YYYY-MM-DD HH:MM:SS 格式显示 DATETIME DATETIME 使用 8 个字节进行存储。...对于输入 DATETIME ,Navicat 提供了 DATETIME INPUT 控件,它结合了 DATE 和 TIME 控件: DATETIME 可以使用包含“T”时间部分描述符字符串文字或通过转换为...DATETIME 来设置: 预告 在探讨了 DATE、TIME 和 DATETIME 类型之后,下一部分介绍剩余两种时间类型:TIMESTAMP 和 YEAR。

    3.5K10

    【MySQL】MySQL配置中sql_mode作用

    MySQL配置中sql_mode作用 不知道你有没有踫到过这种问题,在 MySQL8 默认情况下,我们之前习惯DateTime 类型指定 0000-00-00 这种格式是无法插入或者修改数据...并且,MySQL 可以这些模式分别运用于不同客户端,也就是说,它是有 SESSION 会话设置能力一个系统变量。 如何查看当前系统 sql_mode 呢?和查看系统变量是一样。...CREATE TABLE `test_mode` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` datetime NULL DEFAULT...mysql> insert into test_mode values(null,'0000-00-00 00:00:00'); ERROR 1292 (22007): Incorrect datetime...这里提到了一个严格模式概念,严格模式控制 MySQL 如何处理 INSERT 或 UPDATE 等更改语句中无效或缺失,比如上面我们说过日期和除零问题,如果没有 STRICT_TRANS_TABLES

    11310
    领券