MySQL中,时间戳(Timestamp)是一种数据类型,用于存储日期和时间信息。有两种形式:TIMESTAMP和DATETIME。
一、TIMESTAMP类型:
1、占用4个字节的存储空间。表示范围是从1970年1月1日 00:00:01到2038年12月31日 23:59:59(以格林威治标准时间计)。
2、存储的值会根据时区进行转换,存储为UTC(协调世界时)。
3、当插入或更新时,如果没有为该列提供值,则会自动使用当前时间。
4、时间戳的值是可以自动更新的,例如可以使用DEFAULT CURRENT_TIMESTAMP或ON UPDATE CURRENT_TIMESTAMP来设置自动更新。
5、适合于记录时间戳、创建时间和修改时间等信息。
二、DATETIME类型:
1、占用8个字节的存储空间。可以表示的范围远大于TIMESTAMP,由'1000-01-01 00:00:00'到'9999-12-31 23:59:59'(以Gregorian calendar计)。
2、没有时区转换,并以插入的值直接存储。
3、需要显式提供时间戳值,没有自动更新功能。
4、适合于需要存储非UTC时间、远古或遥远的日期范围的情况。
三、时间戳字符串相互转换
时间转字符串
date_format(now(),‘%Y-%m-%d‘)
时间转时间戳
unix_timestamp(now())
字符串转时间
str_to_date(‘2021-01-19‘,‘%Y-%m-%d %H‘)
字符串转时间戳
unix_timestamp(‘2021-01-19‘)
时间戳转字符串
from_unixtime(1579422064202,‘%Y-%d‘)
时间戳转时间
from_unixtime(1579422064202)