MySQl中有多种表示日期和时间的数据类型。其中YEAR表示年份,DATE表示日期,TIME表示时间,DATETIME和TIMESTAMP表示日期和实践。它们的对比如下:
日期时间类型
占用空间
日期格式
最小值
最大值
零值示例
 DATETIME
 8 bytes
 YYYY-MM-DD HH:MM:SS
 1000-01-01 00:00:00
9999-12-31 23:59:59 
0000-00-00 00:00:00
 TIMESTAMP
 4 bytes
 YYYY-MM-DD HH:MM:SS
 19700101080001
2038 年的时刻 20380119111407
00000000000000
 DATE
 4 bytes
 YYYY-MM-DD
1000-01-01 
9999-12-31 
0000-00-00
 TIME
 3 bytes
 HH:MM:SS
 -838:59:59
838:59:59 
00:00:00
 YEAR
 1 bytes
 YYYY
1901 
2155 
0000
   每种类型的日期时间有效值都有一个区间,如果操作时不在区间内,系统会报错并以零值(见上表)存储。
 DATETIME
   DATETIME 用于表示 年月日 时分秒,是 DATE 和 TIME 的组合,并且记录的年份(见上表)比较长久。如果实际应用中有这样的需求,就可以使用 DATETIME 类型。
 TIMESTAMP
  • TIMESTAMP 用于表示 年月日 时分秒,但是记录的年份(见上表)比较短暂。
  • TIMESTAMP 与时区相关,更能反映本地时区当前时间。当插入日期时,会先转换为本地时区后再存放;当查询日期时,会将日期转换为本地时区后再显示。所以不同时区的人看到的同一时间是不一样的。
  • 表中的第一个 TIMESTAMP 列自动设置为系统时间(CURRENT_TIMESTAMP,即会默认加上DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP属性)。当插入或更新一行,但没有明确给 TIMESTAMP 列赋值,也会自动设置为当前系统时间。如果表中有第二个 TIMESTAMP 列,则默认值设置为0000-00-00 00:00:00。
  • TIMESTAMP 的属性受 Mysql 版本和服务器 SQLMode 的影响较大。
  • 如果需要将timestamp内容显示为数字,检索时将timestamp列+0即可,datetime类型同理

如果记录的日期需要让不同时区的人使用,最好使用 TIMESTAMP。

 DATE
  DATE 用于表示 年月日,如果实际应用值需要保存 年月日 就可以使用 DATE。
 TIME
  TIME 用于表示 时分秒,如果实际应用值需要保存 时分秒 就可以使用 TIME。
 YEAR
  YEAR 用于表示 年份,YEAR 有 2 位(最好使用4位)和 4 位格式的年。 默认是4位。如果实际应用只保存年份,那么用 1 bytes 保存 YEAR 类型完全可以。不但能够节约存储空间,还能提高表的操作效率。
   插入或更新时,日期时间类型允许“不严格”语法,以DATETIME为例(其他日期时间类型雷同):
  • YYYY-MM-DD HH:MM:SS 或 YY-MM-DD HH:MM:SS 格式的字符串。任何符号都可以用作日期部分或时间部分的间隔符。例如:“14-06-18 14:54:10”、“14*06*18 14.54.10”、“14+06+18 14=54=10”是等价的。对于包含日期时间的字符串值,如果月、日、时、分、秒的值小于10,不需要指定两位数。例如:“2014-2-3 2:3:6”、“2014-02-03 02:03:06”是等价的。
  • YYYYMMDDHHMMSS 或 YYMMDDHHMMSS 格式的字符串。如果字符串对于日期时间类型是合法的就可以解释为日期时间类型。例如:“20140618145410” 和 “140618145410”将被解释为 “2014-06-18 14:54:10” ,但是 “20140618145480” 是不合法的(秒数不合法),将被解释为 “0000-00-00 00:00:00”。
  • YYYYMMDDHHMMSS 或 YYMMDDHHMMSS 格式的数字。如果该数字对日期时间类型是合法的就可以解释为日期时间类型。例如:“20140618145410” 和 “140618145410” 将被解释为 “2014-06-18 14:54:10” 。数值的长度应为6、8、12、14。如果数值长度是 8 或 14 位长,则假定为 YYYYMMDD 或 YYYYMMDDHHMMSS 格式。如果数值为 6 或 12 位长,则假定为 YYMMDD 或 YYMMDDHHMMSS 格式。

MySQL建表时,五种日期和时间类型选择的更多相关文章

  1. mysql的五种日期和时间类型【转载】

    [mysql的五种日期和时间类型] mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期 ...

  2. MySQL的五种日期和时间类型

          MySQl中有多种表示日期和时间的数据类型.其中YEAR表示年份,DATE表示日期,TIME表示时间,DATETIME和TIMESTAMP表示日期和实践.它们的对比如下:YEAR ,字节数 ...

  3. MySQL建表时列名同保留字重复问题解决办法

    建表时遇到遇到属性名同MySQL的保留字相同导致不能建表的问题,如下SQL语句: CREATE TABLE TBL_ACCOUNT_FROZEN_RECORD ( ID BIGINT NOT NULL ...

  4. SAP:建表时如果有QUAN、CURR类型的字段不能激活的问题

    建表时如有一个QUAN类型的字段,那么就要给字段设置Reference field,参考的字段的Data Type要是UNIT, 并设置对应的Reference table,也就是参考字段所在的tab ...

  5. Mysql 建表时,日期时间类型选择

    mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示  D ...

  6. MySQL建表时,日期时间类型选择

    MySQL(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示  D ...

  7. MySQL建表时添加备注以及查看某一张表的备注信息

    建表的时候对列和表明添加备注: DROP TABLE IF EXISTS test_table; CREATE TABLE test_table ( ID INTEGER AUTO_INCREMENT ...

  8. MySQL 建表时 date 类型的默认值设置

    在执行下面 SQL 语句时发现报错 CREATE TABLE `jc_site_access_pages` ( `access_date` date NOT NULL DEFAULT '0000-00 ...

  9. mysql建表时拆分出常用字段和不常用字段

    一对一 一张表的一条记录一定只能与另外一张表的一条记录进行对应,反之亦然. 学生表:姓名,性别,年龄,身高,体重,籍贯,家庭住址,紧急联系人 其中姓名.性别.年龄.身高,体重属于常用数据,但是籍贯.住 ...

  10. mysql建表时

    问题:Incorrect column specifier for column 'id' 答案:原来自动增长列用int数据类型,不用varchar

随机推荐

  1. ppt 实用技巧总结

    全是图片且颜色单一 解决方案:在图片上添加图形,加图标 效果图 2.文本功能10个 解决方案:添加背景图片+文本+图标 效果图 只有文本 没有过多内容怎么办

  2. golang倒腾一款简配的具有请求排队功能的并发受限服务器

    golang官方指南给了一些代码片段来,层层递进演示了信道的能力: 1>. 信号量 2>. 限流能力 var sem = make(chan int, MaxOutstanding) fu ...

  3. 解决nvm ls-remote 列表只出现iojs版本

    前言 在 nvm 安装 node 时发现显示不存在此版本,使用 nvm ls-remote 查看可安装列表时发现,列表中只有 iojs $ nvm ls-remote iojs-v1.0.0 iojs ...

  4. Golang 入门 : 文件名、关键字与标识符

    Go 的源文件以 .go 为后缀名存储在计算机中,这些文件名均由小写字母组成,如 scanner.go .如果文件名由多个部分组成,则使用下划线 _ 对它们进行分隔,如 scanner_test.go ...

  5. Opencv环境配置一览

    OpenCV环境配置一览 专业相关,平时经常会使用到opencv的一些函数,目前主要包括Ubuntu系统,Android系统,本篇文章介绍在两个系统下对应的环境配置策略. Ubuntu环境 附上一个很 ...

  6. Linux-Deepin下搭建云笔记

    背景 操作系统切换为Deepin以后,因为没有windows,各家的云笔记产品,几乎对Linux都没有很好的支持. 印象笔记,没有linux版本,web版本不支持markdown 为知笔记,需要收费, ...

  7. 【服务器】Nodejs在局域网配置https访问

    [服务器]Node.js在局域网配置https访问 零.需求: 做一个局域网WebRTC视频聊天系统,需要用到HTTPS.因此,配置Node.js使其支持HTTPS访问. 一.解决 在线生成和证书 访 ...

  8. Java24发布,精心总结

    Java 24作为2025年3月发布的最新版本,延续了Java平台每半年发布一次的节奏,带来了24项重要改进.本文将按照核心改进领域分类,详细解析每个特性的技术原理和实际价值,帮助开发者全面了解这一版 ...

  9. Hyperledger Fabric - 自定义network.sh脚本

    引言:依据hyperledger fabric提供的测试网络脚本搭建自己的网络环境 该系列参考:https://blog.csdn.net/ling1998?type=blog 执行./network ...

  10. SSL测试证书

    1. tomcat 1.1 生成 keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore -validity 365 过 ...