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

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

比如明明只需要日期,却给我一个时间戳或者时分秒都有的东西之类。 在之前,对于时间日期数据类型不怎么感冒,也没怎么用过这一类型。...”转化为“2016”),“70”~“99”转化为19**(下同) 两位数字格式,范围为199,169转化为20**(例如:1化为2001),70~99转化为19** 2、Time time用于存储时间信息...资料上面说系统会输入系统当前日期时间,但是自己尝试了下,如果输入null时候,数据库中也是null,郁闷。...为什么会出现 2018 字符串?...:00:00’问题 在我们数据库定义中,经常可以看到类似这样定义: `start_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' 这样定义隐患其实是比较大

6.8K20

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

也可以TIMESTAMP通过为其分配NULL值来将任何列设置为当前日期时间 ,除非已使用NULL,允许NULL属性对其进行 了定义。...如果SQL模式允许此转换,则将无效日期日期时间时间戳值转换为相应类型“零”值(’0000-00-00’或’0000-00-00 00:00:00’)。...值“10:45:15”转换为0000-00-00”,因为“45”不是有效月份。 * 在日期时间部分与小数秒部分之间唯一识别的分隔符是小数点。...* 服务器要求月份和日期值有效,而不仅仅是分别在1到12和1到31范围内。禁用严格模式后,无效日期(例如) ‘2004-04-31’将转换为0000-00-00’并生成警告。...* MySQL不接受TIMESTAMP值在day或month列中包含零值或不是有效日期值。唯一例外是特殊“零”值 ‘0000-00-00 00:00:00’,如果SQL模式允许该值。

6.1K51
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL时间类型差异

文章目录[隐藏] 时间格式化 DATETIME TIMESTAMP DATE TIME YEAR 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 DATETIME 8 bytes YYYY-MM-DD...“0000-00-00 00:00:00”,但不能为null。...TIMESTAMP 和时区相关,更能反映当前时间。当插入日期时,会先转换为本地时区后再存放;当查询日期时,会将日期换为本地时区后再显示。所以不同时区的人看到同一时间是 不一样。...如果表中有第二个 TIMESTAMP 列,则默认值设置为0000-00-00 00:00:00。 TIMESTAMP 属性受 Mysql 版本和服务器 SQLMode 影响较大。...如果记录日期需要让不同时区的人使用,最好使用 TIMESTAMP。 注:一般建表时候,创建时间用datetime,更新时间用timestamp。

2.6K20

【Mysql】The DATE, DATETIME, and TIMESTAMP Types

如果 SQL 模式允许转换,无效 DATE、DATETIME 或 TIMESTAMP 值会被转换为相应类型 "零 "值('0000-00-00' 或 '0000-00-00 00:00:00')。...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'`**,并产生警告。启用严格模式后,无效日期会产生错误。...GMT:格林尼治标准时间(旧译格林威治平均时间或格林威治标准时间;英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区皇家格林尼治天文台标准时间,因为本初子午线定义在通过那里经线...2.JAVA应用读取到时间和北京时间差了14个小时,为什么?怎么解决?

31530

MySQL时间加减正确打开方式

1背景介绍 业务会有这样需求:时间字段需要加1或减1秒。...00 00:00:00,而其他是正确,此时我们会觉得是不是跟逢整进位有关系,59秒时候再加上1秒进位1分钟,结果却变成了0000-00-00 00:00:00,这是为什么?...-00 00-01-00',也就是1分钟,如果此时为59分,也会初始化成'0000-00-00 00-00-00'; 以此类推,所以并不是所有的都会成功,也不是所有的都会失败,因为这种方式本来就不符合时间加减规范...4正确方式 为日期加上一个时间间隔:date_add() date_add(@dt, interval 1 microsecond); -加1毫秒 date_add(@dt, interval 1 second...1 month); -加1月 date_add(@dt, interval 1 quarter); -加1季 date_add(@dt, interval 1 year); -加1年 为日期减去一个时间间隔

11.8K100

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:日期,就是datetime中date部分; time:时间(段),指定某个区间之间,从-时间到+时间(有负时间表示); timestamp...如下所示,通常我们MySQL中设计datetime类型长度都默认为0: `work_time` datetime(0) DEFAULT NULL COMMENT '清收时间', 这时插入时间通常会是我们常见到

2.9K40

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

禁用严格模式后,会生成'2004-04-31'转换为 无效日期 '0000-00-00'和警告。启用严格模式后,无效日期会生成错误。...例如,如果您使用mysqldump储表,然后重新加载它,MySQL通常会在遇到0值时生成新序列号,从而导致与内容不同甩了 NO_AUTO_VALUE_ON_ZERO 重新加载储文件之前启用...如果启用此模式,则将零件日期插入'0000-00-00'并产生警告。 如果启用了此模式和严格模式,则不允许包含零件日期,插入会产生错误,除非IGNORE给出。...严格模式影响服务器是否允许 '0000-00-00'为有效日期: 如果严格模式未启用, '0000-00-00'则允许插入,不会产生警告。...对于INSERT IGNORE和UPDATE IGNORE,零部件日期插入 '0000-00-00'(这认为是有效IGNORE),并产生一个警告。

3.3K30

MySQL 日期字符串转换

大家好,又见面了,是你们朋友全栈君。...文章目录 日期查询 1)查询当前时间日期 2)时间戳 3)时间截取(返回对应日期时间或者数字) 日期操作 日期时间增减 日期字符串转化 日期字符串 字符串日期 以下函数执行在mysql5.7版本下...%h 小时,12进制[0-11] %i 分钟 [0-59] %s | %S 秒 0-59 日期字符串 DATE_FORMAT(date,pattern) //将日期转化为指定模式字符串 TIME_FORMAT...(now(),'%Y-%m-%d %H:%i-%s'); -- 0000-00-00 15:15-26 select TIME_FORMAT(now(),'%H:%i-%s'); -- 15:15-26...类似于’2010-00-01’ 、 ‘2010-01-00’、‘2010-00’ 之类 NO_ZERO_DATE: 该模式影响服务器是否将 ‘0000-00-00’ 当做合法日期 更多详情 mysql

3.6K20

MySQL关于日期为零值处理

前言: 前面文章我们介绍过日期时间字段查询方法,最近遇到日期值为零问题。原来了解过和 sql_mode 参数设置有关,但还不是特别清楚,本篇文章将探究下MySQL怎么处理日期值为零问题。...1.问题描述 这里我们说日期为零值是指年、月、日为零,即'0000-00-00'。...日期', `dt_col` datetime DEFAULT NULL COMMENT 'datetime时间', `ts_col` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP...如果未启用此模式,则允许部分为零日期插入,并且不会产生任何警告。 如果只启用此模式,则将该零值日期插入为'0000-00-00'并产生警告。...3.结论及建议 简单总结下,NO_ZERO_DATE模式影响'0000-00-00'日期插入,NO_ZERO_IN_DATE模式影响除'0000-00-00'外月、日为零日期插入。

4.3K40

MySQL案例:sql_mode详解

(6)ERROR_FOR_DIVISION_BY_ZERO:该选项决定零整除返回值;如果不启用,那么零整除返回值为null且不告警;如果启用但在非严格模式下,那么零整除返回值为null且产生告警...(18)NO_ZERO_DATE:该选项决定‘0000-00-00’是否可以插入;如果不启用,那么‘0000-00-00’可以插入且不告警;如果启用但在非严格模式下,那么‘0000-00-00’可以插入但会产生告警...;如果启用且在非严格模式下,那么‘0000-00-00’不能插入会直接报错。...(19)NO_ZERO_IN_DATE:该选项决定月份和日期是否可以为00;如果不启用,那么月份和日期可以为00且不告警;如果启用但在非严格模式下,那么月份和日期可以为00但会产生告警;如果启用且在非严格模式下...,那么月份和日期不能为00会直接报错。

1.2K60

MySQL sql_mode坑及严格模式详解

如果strict模式禁用,不合法数据如”2004-04-31”存储为”0000-00-00”并且审查警告;若严格模式启用则会生成错误。...(最后这一句确定没有翻译错,但是测试时候,数据时原样插入,没有转换为0000-00-00) ANSI_QUOTES :这个模式反人类,大致意思就是启用来这个模式,不能使用双引号来引用字符创,...NO_ZERO_DATE :这个模式影响着插入0000-00-00’值是否作为合法数值,这个结果和是否启用严格模式有关。...如果这个模式禁用,则’0000-00-00允许并且插入没有警告,如果这个模式启用,则’0000-00-00运行并且插入产生一个警告信息;如果这个模式和严格模式启用,则’0000-00-00’不被允许并且插入产生错误...如果这个模式启用,dates中零部分插入作为“0000-00-00”并且产生一个警告。如果这个模式和严格模式启用,则dates中零部分不被允许并且插入产生错误,除非ignore也使用。

1.9K20

MySQL 中日期时间类型

除了月日可零,MySQL 还支持设置年月日都零0000-00-00,对于日期非必填情况比较有用,因为此时它比单纯 NULL 更有语义。...时区设置也可以是以连接为单位,这样来自不同时区请求可得到不同时间。 TIMESTAMP 和 DATETIME 都可包含至多 6 位小数来表示时间中毫秒(microseconds)部分。...在写入时,对于非法日期时间值,将自动存成零值,即 '0000-00-00' 或 '0000-00-00 00:00:00'。...如果这这个日期列设置 10:45:15 则会认为是非法值,因为 45 不是一个合法月份值,所以存储时变成零值 0000-00-00日期时间与毫秒分界符必需是小数点。...所以对于日期 2004-04-31 算是非法,会变成零值 0000-00-00。如果不需要这样约束检查,可开启 MySQL ALLOW_INVALID_DATES 模式。

6.7K20
领券