4. 另外一种算法:
4.1 分析
存储时:
1) 将用户输入的时间,与当前SESSION TIME_ZONE 相减. (得到标准格林威治时间)
2) 将第1步结果与时间" 1970-01-01 00:00:00"相减,得到X秒
3) 将第2步结果转换与十六进制,并反向
读取时:
1) 定位到行后,将字段值反向并转换成十进制;
2) 将第1步结果与 " 1970-01-01 00:00:00"相加;
3) 将第2步结果与 当前SESSION TIME_ZONE 相加,并将结果输出给用户
4.2 验证:
比如,当前TIME_ZONE='+08:00' ,time = '2008-05-09 15:09:48' ,
存储时:
1) select '2008-05-09 15:09:48'- interval 8 hour ;
--> 2008-05-09 07:09:48
2) select datediff('2008-05-09','1970-01-01')*24*3600 + time_to_sec('07:09:48');
--> 1210316988
3) select conv(1210316988,10,16) ;
--> 4823F8BC
反向:
--> BC F8 32 48