TIMESTAMP数据类型
MySQL目前暂不支持列的default函数,如果你想把某列的默认值设置为当前日期/时间的话,可以使用TIMESTAMP数据类型,下面详说TIMESTAMP数据类型的变体:①timestamp default current_timestamp on update current_timestamp在创建新纪录、更新现有记录的时候都对该列进行刷新(说白了就是insert和update的时候数据..
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列。
更多推荐
所有评论(0)