该DATETIME类型用于包含日期和时间部分的值。MySQL检索并DATETIME以格式显示 值 。支持的范围是 到。 'YYYY-MM-DD hh:mm:ss''1000-01-01 00:00:00''9999-12-31 23:59:59'
该TIMESTAMP数据类型被用于同时包含日期和时间部分的值。 UTCTIMESTAMP的范围是UTC。 '1970-01-01 00:00:01''2038-01-19 03:14:07'
-- 创建表,a是datetime,b是timestamp:
create table test_date_stamp (a datetime, b timestamp);-- 查询表结构:
desc test_date_stamp;
备注:timestamp 不能为空,默认值是当前时间;如果数据a发生变化,数据b更新为当前时间;
-- 插入a字段名称数据:
insert into test_date_stamp (a) values ('2023-8-29 09:50:01');-- 查询数据:
select * from test_date_stamp;-- 查询当前时间,NOW()函数,获取当前时间:
select NOW();
备注:可以看到 b字段有默认事件为当前系统时间;
-- 更新a字段名称数据:
update test_date_stamp set a='2023-8-29 10:50:01';-- 查询表数据:
select * from test_date_stamp;-- 查询当前时间:
select now();
备注:以上可以验证,表数据a发生变化,b数据更新为当前时间
练习:创建表,a、b字段为整数,c字段为timestamp,c时间随着a、b数据发生变化而变化更新为数据变动时的当前时间;
-- 创建表:
create table test_timestamp01 (a int, b int, c timestamp);-- 查询表结构:
desc test_timestamp;-- 插入a、b字段数据:
insert into test_timestamp (a, b) values (1, 2);-- 查询所有表数据:
select * from test_timeatsmp01;-- 分别更新a、b数据,查看数据,观察c时间变化:
update test_timestamp01 set a = 10;
update test_timestamp01 set b = 20;
select * from test_timeatsmp01;