【IT168技术文档】1. 环境版本:
OS : LINUX AS4
MYSQL: 5.0.51a-log
ENGINE : Myisam
2. 属性
TIMESTAMP , Stored as unix time(), low byte first.
共占4个字节(32位),范围'1970-01-01 00:00:00'到'2037-12-31 23:59:59' ,格式'YYY-MM-DD HH:MM:SS'
3. 一种算法:
3.1分析
在存储时,
1) 通过UNIX_TIMESTAMP(date)函数,将用户输入的时间转换成unix time();
select UNIX_TIMESTAMP(date);
2) 将第1步的结果转换成十六进制 并反向存储.
在从数据库里取数据时:
1) 从磁盘定位到行后,按反向顺序取出,并转换成十进制;
2) 将第1步的结果,用FROM_UNIXTIME()函数获得时间.
select FROM_UNIXTIME(unix_timestamp);
注意,以上两个函数都与系统参数:time_zone有关.
如果两个操作时TIME_ZONE的值不一样,那么得到的日期前后将不一致.
比如,当前TIME_ZONE='+08:00' ,time = '2009-03-09 14:22:48' ,
1) select UNIX_TIMESTAMP('2009-03-09 14:22:48');
--> 1236579768
2) select conv(1236579768,10,16) ;
--> 49B4B5B8
3) 反向存储 : B8 B5 B4 49