实践MySQL之数据类型

日期&时间

关于日期&时间,MySQL有5种表示时间值的日期和时间类型,分别为、DATE,TIME,YEAR,DATETIME,TIMESTAMP。

类型 大小 (字节) 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ‘-838:59:59’/’838:59:59’ HH:MM:SS ssssss 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS ssssss 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00 000000/2038-01-19 03:14:07.999999 YYYYMMDD HHMMSS ssssss 混合日期和时间值,时间戳

时间函数

select CURRENT_TIMESTAMP() from dual;

select NOW() from dual;

select LOCALTIME() from dual;

select LOCALTIMESTAMP() from dual;

timestamp

TIMESTAMP类型有专有的自动设值特性,可以实现在新建或修改记录时自动设置值。

timestamp(n),n:0~6,毫秒或微秒位数

timestamp默认不可为null,所以默认自动会被追加上DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,一个表中不允许两个not null的timestamp,除非第二个手动设置默认值

1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在创建新记录和修改现有记录的时候都会修改字段值

2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP 在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它

3,TIMESTAMP null ON UPDATE CURRENT_TIMESTAMP 在创建新记录的时候把这个字段设置为null,以后修改时刷新它

4,TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP 在创建新记录的时候把这个字段设置为给定值,以后修改时刷新它

timestamp所能存储的时间范围为:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’。

对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。

datetime

datetime所能存储的时间范围为:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。

datetime(n),n:0~6,毫秒或微秒位数

而对于DATETIME,不做任何改变,基本上是原样输入和输出。