mycosmos 2012-11-21
这两天有个QA在询问说,数据库console,查看时间好麻烦,因为数据库存储的时间是BigInt,的确不知道是什么!
印象中有相关函数转化,如下:
mysql数据库存储时间,一般都会设计BigInt类型,10位,或者13位, 或者更大,其中13位是毫秒,但是在通过Console查询数据库时间时,bigint为整数不方便查看。
mysql提供了对应日期转化的函数
其中FROM_UNIXTIME函数是对应的大整数转化为对应的日期,UNIX_TIMESTAMP函数是逆反操作。
实例如下:
select FROM_UNIXTIME(1344834077);------2012-08-13 13:01:17.0
select UNIX_TIMESTAMP('2012-08-13 13:01:17.0');-----1344834077
以上为10位,对于13位,由于mysql不支持毫秒级别,因此需要去掉毫秒对应字段,即最后三位,如:
select FROM_UNIXTIME(1344834077887/1000);-------------2012-08-13 13:01:17.0
其中函数后面还要以跟'%Y %D %M %h:%i:%s %x'为对应的format日期的格式,输出想要的日期!
详细可参考官网:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_from-unixtime
其中函数表达式可以是对应的字段。
解决了时间,IP存在同样的问题。(ps:数据库IP字段存在整数,在数据挖掘以及反垃圾中有很重要的作用)
对应的函数有:
INET_ATON(expr):给出一个作为字符串的网络地址的"点地址"(如127.0.0.1)表示,返回一个代表该地址数值的整数
SELECT INET_ATON('192.168.130.55');-----------(3232268855);
INET_NTOA(expr):返回作为字符串的该地址的表示。
select INET_NTOA(3232268855);---------------------192.168.130.55
以上为几个函数,在查询时还是有点作用,简单分享下!
(ps:以上函数只是在查询时供调用,实际使用中,相关转化还是在应用层工具类中实现,因为相关转化的性能,以及应用层数据调用都可控)