首页 > 编程知识 正文

timestamp数据类型格式,timestamp数据类型是什么

时间:2023-05-05 13:32:52 阅读:213474 作者:506

MySQL目前暂不支持列的default函数,如果你想把某列的默认值设置为当前日期/时间的话,可以使用TIMESTAMP数据类型,下面详说TIMESTAMP数据类型的变体:

①timestamp default current_timestamp on update current_timestamp在创建新纪录、更新现有记录的时候都对该列进行刷新(说白了就是insert和update的时候数据库自动更新该列中的数据)

②timestamp default current_timestamp在创建新记录的时候把这个字段设置为当前时间,但修改时不再刷新,即insert时数据库自动刷新该列中的值,其他操作如update则不刷新。

③timestamp on update current_timestamp在创建新记录的时候设置为0,修改时重新设置为时间,即insert时该列置为0,update操作时设置为当前时间。

④timestamp default ‘yyyy-mm-dd hh:mm:ss’ on update current_timestamp在创建新记录时设置为给定值,修改时刷新它。即insert时设置为特定格式的数值,update时按照该格式来刷新。

显示

Timestamp(14),显示为YYYYMMDDHHMMSS

Timestamp(12),显示为YYMMDDHHMMSS

Timestamp(10),显示为YYMMDDHHMM

Timestamp(8),显示为YYYYMMDD

Timestamp(6),显示为YYMMDD

Timestamp(4),显示为YYMM

Timestamp(2),显示为YY

Timestamp列长为0或者比14大时均会强制定义为列长14;列长在从1-13范围的奇数值尺寸均被强制为下一个更大的偶数。

注意事项

①所有的timestamp列都占用同样的存储大小,即Timestamp(2)与Timestamp(14)占用同样的空间,也就是说两者都是存储年月日时分秒,只不过显示内容不同而已。

②timestamp列的列值是经过格式化之后的检索值,这就意味着某一部分信息经过格式化之后被删除/保留,那么就不能使用某些函数来操作timestamp列,除非timestamp值的相关部分被包含在格式化的数值中,例如:在显示长度大于等于Timestamp(10)时,timestamp列的HH部分才能被显示出来,这样就能调用HOUR()方法,在小于Timestamp(10)时是不会显示出HH部分的,此时调用HOUR()方法会产生一个不可预知的结果。

③不合法的日期,会强制为0来存储。

扩展

可以使用timestamp列类型来自动地、使用当前日期/时间、来标记用户的insert或者update操作。

如果一个table中有多个timestamp列,那么只有第一个timestamp列才会自动更新,那么自动更新第一个timestamp列会在以下任何条件下发生:

①列值没有明确的在一个insert或者load data infile语句中指定,即没有在insert时设置列值。

②列值没有明确的在一个update语句中指定,并且其他列的列值指定了新值。

③明确的指定timestamp列为null。

④除第一个timestamp列之外,其他timestamp列设置为null或者now()时自动更新这些timestamp列。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。