CREATE TABLE example ( id INT PRIMARY KEY AUTO_INCREMENT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
在上面的代码中,大家创建了一个名为example的表,其中有一个自动递增的id列和一个名为created_at的列。这个列的默认值为当前时间戳。
timestamp可以存储的最小值是’1970-01-01 00:00:01’,最大值是’2038-01-19 03:14:07’。这是因为timestamp使用32位整数存储,所以它只能表示从1970年到2038年之间的时间戳。
如果大家尝试将一个超过timestamp最大值的值插入到数据库中,MySQL会将其值截断为最大值。同样地,如果大家尝试将一个小于timestamp最小值的值插入到数据库中,MySQL会将其值设为默认值。
INSERT INTO example (created_at) VALUES ('2100-01-01 00:00:00');
在上面的代码中,大家尝试插入一个大于timestamp最大值的时间戳。这将被MySQL截断。
在实际应用中,大家可以使用NOW()函数来获取当前时间戳,或者使用UNIX_TIMESTAMP()函数将日期和时间转换为时间戳。
SELECT * FROM example WHERE created_at >DATE_SUB(NOW(), INTERVAL 1 DAY); SELECT UNIX_TIMESTAMP('2022-01-01 00:00:00');
在上面的代码中,大家使用DATE_SUB函数和NOW函数来查询一天内创建的行,并使用UNIX_TIMESTAMP函数将’2022-01-01 00:00:00’转换为时间戳。