一个完整的日期格式如下:YYYY-MM-DD HH:MM:SS[.fraction]
- YYYY-MM-DD 为日期
- HH:MM:SS 为时间
- fraction 为毫秒
比如:’1970-01-01 00:00:01.000000’ ~ ‘2038-01-19 03:14:07.999999’。
类型 | 格式 | 范围 |
---|---|---|
date | “YYYY-MM-DD” | ‘1000-01-01’ ~ ‘9999-12-31’ |
time | “HH:MM:SS” | ‘-838:59:59’ ~ ’838:59:59’ |
datetime | “YYYY-MM-DD HH:MM:SS” | ‘1000-01-01 00:00:00’ ~ ’9999-12-31 23:59:59’ |
timestamp | “YYYY-MM-DD” | ’1970-01-01 00:00:01’ ~ ‘2038-01-19 03:14:07’ |
timestamp相比于datetime的区别:
timestamp
一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。
使用数字签名技术产生的数据, 签名的对象包括了原始文件信息、 签名参数、 签名时间等信息。广泛的运用在知识产权保护、 合同签字、 金融帐务、 电子报价投标、 股票交易等方面。
timestamp占4字节,datetime占8字节;
包含时区信息,如果日后修改了时区的话,timestamp所表示的时间会随时区而变化,而datetime不会。
timestamp 更适合来记录时间,比如我在东八区时间现在是 2016-08-02 10:35:52, 你在日本(东九区此时时间为 2016-08-02 11:35:52),我和你在聊天,数据库记录了时间,取出来之后,对于我来说时间是 2016-08-02 10:35:52,对于日本的你来说就是 2016-08-02 11:35:52。所以就不用考虑时区的计算了。
timestamp的劣势:只能表示从1970年到2038年的时间,而datetime (1000-9999)。
性能方面比较,timestamp是纯数字,计算要快一些,但人类不可读,还必须要经过函数转化,datetime是字符串类型,人类肉眼直接可读,虽然计算加减乘除时要经过一道转化。