MySql中的Date、DateTime、TimeStamp 时间类型特点

217 阅读2分钟

DataTypes

Date and Time Data Type Syntax

DATE

  • 表示日期
  • 时间范围:'1000-01-01' ~ '9999-12-31'
  • 允许字符串或数字赋值给DATE类型

DATETIME[(fsp)]

  • 表示日期和时间
  • 时间范围:'1000-01-01 00:00:00.000000' ~ '9999-12-31 23:59:59.999999'
  • fsp表示精度,可以填写0~6,默认为0,不填则为0
  • 可以初始化或更新为当前时间,在设置列属性时通过DEFAULT CURRENT_TIMESTAMP(指定默认值为当前时间)或ON UPDATE CURRENT_TIMESTAMP(设置字段值在更新这条记录时自动更新为当前时间)

TIMESTAMP[(fsp)]

  • 表示时间戳,记录自1970-01-01 00:00:01.000000以来的秒数
  • 时间范围:'1970-01-01 00:00:01.000000' UTC to '2038-01-19 03:14:07.999999' UTC
  • fsp表示精度,可以填写0~6,默认为0,不填则为0
  • 0 用来表示0000-00-00 00:00:00,不能表示1970-01-01 00:00:00
  • 未声明NOT NULL的列 均可为设置为NULL
  • 特可以使用DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP帮助我们自动设置当前的时间
  • ON UPDATE CURRENT_TIMESTAMP使用的时候,如果所有列都更新为原值,实际上整条记录是没有发生变化的,所以时间戳自然也不会更新
  • 在存储时,会将当前时间转换为UTC时区的时间进行存储;在检索时又会将UTC时区的时间转换为当前时区的时间(默认情况下,当前时区为服务器的时区;也可以对不同连接的不同时区进行转换;更换时区设置将会影响检索的准确性,会和存储的时候对不起来)
    • 为连接设置时区 eg:jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Shanghai

如有理解错误,还请各位前辈告知