一篇讲透DATE、DATETIME 和 TIMESTAMP

本文详细探讨了MySQL中的DATE、DATETIME和TIMESTAMP数据类型,包括它们的格式、特征、小数部分、自动赋值功能、时区处理及注意事项。DATE类型仅包含年月日,而DATETIME和TIMESTAMP包含完整的日期时间,但TIMESTAMP的范围受限。二者在处理时区上有所不同,TIMESTAMP会进行时区转换,而DATETIME则不进行。此外,三种类型都支持自动初始化和更新为当前时间。最后,文章强调了在处理自动属性和NULL值时的一些细节和陷阱。
摘要由CSDN通过智能技术生成

 

究其原因,有两个:

一是,傻傻的分不清 DATE、DATETIME 和 TIMESTAMP 三种数据类型,记不住它们的格式;

二是,它们或多或少和时区相关,为了存储时区无关数据,推荐使用 int(11) 存储时间戳格式

一、 DATE、DATETIME 和 TIMESTAMP 的格式

首先要说明的是,这三种数据类型是息息相关的,它们有很多相似之处,也有各自的特征,因为这些特征,才导致了彼此的不同。

其次MySQL 可以识别多种格式的 date、datetime 和 timestamp ,具体支持的格式有

  1. 对于 date 类型,支持 YYYY-MM-DD 或 YY-MM-DD 以及它们各自的变形

说到变形,就是指中划线 ( - ) 可以替换为任意字符,除了数字 0-9 ,比如

格式

范例

YYYY-MM-DD

2018-09-13

YY-MM-DD

18-09-13

YYYY/MM/DD

2018/09/13

YY/MM/DD

18/09/13

YYYY^MM^DD

2018^09^13

YY^MM^DD

18^09^13

YYYY@MM@DD

2018@09@13

YY@MM@DD

18@09@13

同时还支持 YYYYMMDD 和 YYMMDD 的字符串形式,例如 '20180913' 和 '180913'。

还支持 YYYYMMMDD 和 YYMMDD 的数字格式,例如 20180913 和 180913。

2、对于 datetime 和 timestamp 类型,支持 YYYY-MM-DD HH:MM:SS 或 YY-MM-DD HH:MM:SS,一起它们的变形

这个变形其实和 DATE 一样,而且就是指中划线 ( - ) 可以替换为任意字符,除了数字 0-9 。

更进一步,这两个类型可以针对日期部分和时间部分使用不同的分隔符

格式

范例

YYYY-MM-DD HH:MM:SS

2018-09-13 21:15:10

YY-MM-DD HH:MM:SS

18-09-13 21:15:10

YYYYY^MM^DD HH+MM+SS

2018^09^13 21+15+10

YY^MM^DD HH+MM+SS

18^09^13 21+15+10

YYYY^MM^DD

2018^09^13

YY^MM^DD

18^09^13

YYYY@MM@DD HH^MM^SS

2018@09@13 21^15^10

YY@MM@DD HH^MM^SS

18@09@13 21^15^10

这种格式下也有几个点要注意

1、日期和时间部分与小数秒部分之间的唯一可用的分隔符号是小数点 ( . ) 例如 2018-09-13 21:15:10.11
2、日期与时间部分的分隔符不一定就要使用空格 ( ' ' ),还可以使用字符 T ,例如 2018-09-13 21:15:10 和 20

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值