Mysql-DATE,DATETIME和TIMESTAMP类型与区别

简介:

本节介绍它们的特征,它们的相似之处以及它们的区别。

  • 目录

MySQL 以多种格式识别DATE,DATETIME和TIMESTAMP值

日期类型显示格式显示值范围
DATEYYYY-MM-DD1000-01-019999-12-31
DATETIMEYYYY-MM-DD hh:mm:ss1000-01-01 00:00:009999-12-31 23:59:59
TIMESTAMPYYYY-MM-DD hh:mm:ss1970-01-01 00:00:01UTC到2038-01-19 03:14:07备注:MySQL不接受TIMESTAMP在日期或月份列中包含零的值或不是有效日期的值。唯一的例外是特殊的“ 零 ”值 '0000-00-00 00:00:00'
TIMEhh:mm:ss/hhh:mm:ss-838:59:59到 838:59:59备注:小时部分可能很大,因为TIME类型不仅可以用来表示一天中的时间(必须小于24小时),还可以用于表示两个事件之间的经过时间或时间间隔(可能远大于24)小时,甚至是负面的)

UTC介绍:

协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。

TIMESTAMP和DATETIME的自动初始化和更新

TIMESTAMP和 DATETIME列可以自动初始化并更新为当前日期和时间(即当前时间戳)。

对于表中的任何TIMESTAMP或 DATETIME列,您可以将当前时间戳分配为默认值,自动更新值或两者:

  • 自动初始化列设置为插入行的当前时间戳,该列不指定列的值。

  • 当行中任何其他列的值从其当前值更改时,自动更新列将自动更新为当前时间戳。如果所有其他列都设置为其当前值,则自动更新列保持不变。要防止在其他列更改时更新自动更新列,请将其明确设置为其当前值。要更新自动更新的列,即使其他列未更改,也要将其显式设置为应具有的值(例如,将其设置为 CURRENT_TIMESTAMP)。

TIMESTAMP或 DATETIME列定义可以指定默认值和自动更新值的当前时间戳,对于一个而不是另一个,或两者都不指定。不同的列可以具有不同的自动属性组合。以下规则描述了可能性:

  • 使用DEFAULT CURRENT_TIMESTAMP和 ON UPDATE CURRENT_TIMESTAMP,列具有其默认值的当前时间戳,并自动更新为当前时间戳。

  • CREATE TABLE t1 (
      ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    );

  • 使用DEFAULT子句但没有ON UPDATE CURRENT_TIMESTAMP子句,该列具有给定的默认值,并且不会自动更新为当前时间戳。

    默认值取决于 DEFAULT子句是指定 CURRENT_TIMESTAMP还是常量值。使用CURRENT_TIMESTAMP,默认为当前时间戳。

    CREATE TABLE t1 (
      ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
      dt DATETIME DEFAULT CURRENT_TIMESTAMP
    );

    TIMESTAMPDATETIME的区别:

    TIMESTAMP 存储空间比较小,表示的日期时间范围也比较小
    底层存储方式不同, TIMESTAMP 底层存储的是毫秒值,距离 1970-1-1 0:0:0 0 毫秒的毫秒值。
    两个日期比较大小或日期计算时, TIMESTAMP 更方便、更快。
    TIMESTAMP 和时区有关。 TIMESTAMP 会根据用户的时区不同,显示不同的结果。而 DATETIME 则只能
    反映出插入时当地的时区,其他时区的人查看数据必然会有误差的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任错错

如果对您有帮助我很开心

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值