TIMESTAMP和DATETIME的比较

TIMESTAMP和DATETIME的相同点
两者都可用来表示YYYY-MM-DD HH:MM:SS[.fraction]类型的日期。

TIMESTAMP和DATETIME的不同点
1、两者的存储方式不一样
对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。
而对于DATETIME,不做任何改变,基本上是原样输入和输出。

2、两者所能存储的时间范围不一样
timestamp所能存储的时间范围为:‘1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’。
datetime所能存储的时间范围为:‘1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。

TIMESTAMP的变体
1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在创建新记录和修改现有记录的时候都对这个数据列刷新

2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP
在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它

3,TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在创建新记录的时候把这个字段设置为0,以后修改时刷新它

4,TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP
在创建新记录的时候把这个字段设置为给定值,以后修改时刷新它

当指定日期值时,当心某些缺陷
1、允许作为字符串指定值的宽松格式能被欺骗。例如,,因为“:”分隔符的使
用,值’10:11:12’可能看起来像时间值,但是如果在一个日期中使用,上下文将作
为年份被解释成’2010-11-12’。值’10:45:15’将被变换到’0000-00-00’,因为’45’
不是一个合法的月份。

2、以2位数字指定的年值是模糊的,因为世纪是未知的。MySQL使用下列规则
解释2位年值: 在00-69范围的年值被变换到2000-2069。 在范围70-99的年值被变
换到1970-1999。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TIMESTAMPDATETIME是MySQL中用于存储日期和时间的数据类型。它们之间有一些不同点。 首先,它们的存储方式不同。对于TIMESTAMP,它会将客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储,并在查询时再转化为客户端当前时区进行返回。而对于DATETIME,它基本上是原样输入和输出,不做任何改变。[1] 其次,TIMESTAMP有一个特殊的变体,即"TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"。这意味着在创建新记录和修改现有记录时,这个数据列都会被刷新为当前时间。[2] 关于TIMESTAMPDATETIME的一些其他特点包括: - TIMESTAMP列必须有默认值,可以是"0000-00-00 00:00:00",但不能为null。而TIMESTAMP列的值不能被手动设置,只能由数据库自动修改。一个表可以有多个TIMESTAMP列,但只有一个列会根据数据更新而改变为当前时间。因此,在一个表中设置多个TIMESTAMP列是没有意义的,实际上一个表通常只需要一个TIMESTAMP列。[3] - TIMESTAMP列的默认值是CURRENT_TIMESTAMP常量值。当记录数据发生变化时,TIMESTAMP列会自动将其值设定为当前时间。[3] - DATETIME列可以设置为多个,默认可以为null,并且可以手动设置其值。DATETIME列不能设定默认值,但可以通过触发器或在插入数据时将其值设置为now()来实现类似的效果。[3] 关于日期格式转换,可以使用DATE_FORMAT函数将日期转换为字符串,也可以使用STR_TO_DATE函数将字符串转换为日期。具体的用法可以参考上述引用[3]中的示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值