mysql datetime格式
MySQL中的DateTime格式与
对于许多新手来说,MySQL中的DateTime格式可能是一个令人困惑的话题。那么,今天让我们一起来深入一下MySQL中的DateTime格式以及其与timestamp的差别。
我们要了解的是MySQL中的DateTime格式。它表示为“yyyy-MM-dd HH:mm:ss”。例如,我们可以见到这样的时间表示:2021-10-31 00:00:00 或 2021-10-31 08:00:00。
接下来,我们来聊聊DateTime与timestamp之间的区别。
1. DateTime:
存储格式是年月日时分秒的整数,与时区无关。存入的值就是显示的值,不会根据当前时区进行转换。
从MySQL 5.6.4版本开始,DateTime可以存储小数片段,最多到小数点后6位,显示时格式为“yyyy-MM-dd HH:mm:ss[.222222]”。而在MySQL 5.5版本中,没有小数片段,精确到秒。
DateTime的存储范围从1000-01-01 00:00:00到'9999-12-31 23:59:59'。
DateTime的长度是8个字节。即使小数位数是0,存储时也会存储6位小数,只是显示时显示为0位。
2. Timestamp:
Timestamp存入的是自1970-01-01午夜(格林尼治标准时间)以来的秒数,这与Unix时间戳相同。它与时区有关,查询时会转为相应的时区时间。
从MySQL 5.5版本开始,Timestamp就支持小数片段。
Timestamp的存储范围从'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07'。
由于存储长度的原因,Timestamp支持的范围比DateTime小。
Timestamp可以当作时间戳使用,在数据更新时,它可以自动更新。这一列只能由系统自动更新,不能通过SQL手动更新,这在乐观锁场景中有广泛应用。
无论是DateTime还是Timestamp,都可以设置默认值,并在其他列值更新时更新为当前时间。例如,使用语句“ALTER TABLE `mytest`.`date_time_test` CHANGE COLUMN `col2` `col2` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;”就可以实现这一功能。
要提醒大家的是,date只存储日期,不存储时间。而DateTime与时区无关,Timestamp则与时区有关。在实际应用中,要根据需求选择合适的类型。
以上就是关于MySQL中DateTime格式以及其与Timestamp区别的详细。希望这篇文章能够帮助大家更好地理解这一话题。如果你有任何疑问或需要进一步的解释,请随时向我提问。