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)