本文共 2558 字,大约阅读时间需要 8 分钟。
在上期文章中,博主介绍了MySQL的数据类型Numeric,今天我们继续探索第二种数据类型: 日期或时间。
MySQL时间类型包括Date、Datetime、Timestamp、time、year。
日期(不含时分秒)
1000-01-01 ~ 9999-12-31
YYYY-MM-DD
日期(含时分秒)
1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.499999
YYYY-MM-DD hh:mm:ss[.小数位
]
提示:小数位长度6,取值0-6。
时间戳
‘1970-01-01 00:00:01.000000’ UTC~‘2038-01-19 03:14:07.499999’ UTC.
提示:Timestamp值存储为自’1970-01-01 00:00:00’UTC以来的秒数。Timestamp不能表示值“1970-01-01 00:00:00”,因为这相当于从1970-01-01 00:00:00算起的0秒。如果表示0值,可输入“0000-00-00 00:00:00“。
YYYY-MM-DD hh:mm:ss[.小数位
]
提示:小数位长度6,取值0-6。
时间
-838:59:59.000000~838:59:59.000000
hh:mm:ss[.小数位
]
提示:小数位长度6,取值0-6。
年份
1901~2155或0000
YYYY
MySQL支持对Timestamp
和Datetime
类型的字段进行自动填充(默认为当前数据库服务器时间)。那么该如何实现呢?且看下文。
对于表中的任何Timestamp
或Datetime
列,你可以将“当前时间(戳)”
指定为默认值或者自动更新,对于未指定列值的行,将自动初始化为当前时间(戳)。
当行中任何其他列的值发生变化时,自动更新的(时间(戳)
)列会更新为当前时间(戳),否则自动更新的列将保持不变。要防止自动更新的列在其他列更改时立即更新,请将其显式设置为当前值。自动更新的列发生变化时,即使行中的其他列没有更改,也要将其显式设置为它应该具有的值(需设置为CURRENT_TIMESTAMP
)。
要实现自动更改,需在列定义中使用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);
默认为当前时间戳,不会自动更新为最新时间戳。
CREATE TABLE t1 ( ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP);
默认为一个常量,不会自动更新为最新时间戳。
CREATE TABLE t1 ( ts TIMESTAMP DEFAULT 0, dt DATETIME DEFAULT 0);
默认为一个常量,会自动更新为最新时间戳。
CREATE TABLE t1 ( ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP);
设置默认值,会自动更新为最新时间戳。如Timestamp类型的字段未设置默认值,默认为0,否则以设置为准。
CREATE TABLE t1 ( ts1 TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- default 0 ts2 TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP -- default NULL);
同样,除非使用NOT NULL定义,否则Datetime的默认值为0:
CREATE TABLE t1 ( dt1 DATETIME ON UPDATE CURRENT_TIMESTAMP, -- default NULL dt2 DATETIME NOT NULL ON UPDATE CURRENT_TIMESTAMP -- default 0);
本文对MySQL中的日期/时间类型进行重点说明和介绍,有助于我们在建库建表时,应选择何种类型提供依据或建议。
走过的、路过的盆友们,点点赞,收收藏,并加以指导,以备不时之需哈~
转载地址:http://jxdfk.baihongyu.com/