mysql datetime vs timestamp


datetime

datetime包含日期和时间部分,展现格式为'YYYY-MM-DD hh:mm:ss',支持的范围为'1000-01-01 00:00:00' to '9999-12-31 23:59:59'。

timestamp

timestamp包含日期和时间部分,展现格式为'YYYY-MM-DD hh:mm:ss',支持的范围为'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC。

区别

timestamp存储的时候会把当前时区转换为UTC时间,取出的时候会把UTC时间转换为当前时区的时间,但是datetime不会。我的理解是timestamp存储的是一个标准的时间,然后根据你所在的时区进行显示,而datetime有点类似于存储的就是“字符串”(类比),存储的是什么,取出来就是什么,涉及到时区的问题要程序去处理。所以如果你的系统要在不同国家使用,建议使用timestamp。

参考

The DATE, DATETIME, and TIMESTAMP Types
MySQL Datetime vs Timestamp column types – which one I should use?