幽灵学院

MySQL-数据类型存储-TIMESTAMP

2019-03-14 23:41 来源:网络整理 编辑:幽灵学院  人气:   评论一下

  【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

[提醒] 除特别声明外,该内容由( )发布,转载请保留文章出处!
  •  我顶 
  • 点击
  • 收藏