日期&时间
关于日期&时间,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,不做任何改变,基本上是原样输入和输出。