这两天,因为统计mysql的数据,用到了一些mysql的函数,发现mysql的函数瞒强大的,很多函数Oracle都没有,因为用到了其中几个函数,特此记录一下:
在当前时间上,mysql都有不同的4个函数,oracle这里对应的有sysdate。
- mysql> select curdate(),curtime(),now(),sysdate();
- +------------+-----------+---------------------+---------------------+
- | curdate() | curtime() | now() | sysdate() |
- +------------+-----------+---------------------+---------------------+
- | 2007-05-04 | 14:42:23 | 2007-05-04 14:42:23 | 2007-05-04 14:42:23 |
- +------------+-----------+---------------------+---------------------+
- 1 row in set (0.00 sec)
在统计时间的时候,因为统计表中放的是一个unix时间戳,也就是从 ‘1970-01-01 00:00:00′ GMT 开始的秒数,在oracle中,如果需要把它转换成时间,是没有直接的函数的,mysql则有UNIX_TIMESTAMP()与对应的FROM_UNIXTIME()来解决这个问题。
- mysql> select UNIX_TIMESTAMP(),FROM_UNIXTIME(UNIX_TIMESTAMP()),now();
- +------------------+---------------------------------+---------------------+
- | UNIX_TIMESTAMP() | FROM_UNIXTIME(UNIX_TIMESTAMP()) | now() |
- +------------------+---------------------------------+---------------------+
- | 1178261202 | 2007-05-04 14:46:42 | 2007-05-04 14:46:42 |
- +------------------+---------------------------------+---------------------+
- 1 row in set (0.00 sec)
在统计IP的时候,统计表中放的又是一个数字形式的IP,如果想把这个IP转换成字符形式,Oracle中应当只有自己写函数了,mysql则有INET_ATON()与INET_NTOA()可以帮你解决这样的问题。
- mysql> select INET_ATON("209.207.224.40"),INET_NTOA(INET_ATON("209.207.224.40"));
- +-----------------------------+----------------------------------------+
- | INET_ATON("209.207.224.40") | INET_NTOA(INET_ATON("209.207.224.40")) |
- +-----------------------------+----------------------------------------+
- | 3520061480 | 209.207.224.40 |
- +-----------------------------+----------------------------------------+
- 1 row in set (0.04 sec)
其实,以上产生的数字通常是以网络地址字节的顺序;例如,上面的数字是以 209*256^3 + 207*256^2 + 224*256 + 40 被计算出来的。如:
- mysql> select 209*256*256*256 + 207*256*256 + 224*256 + 40;
- +----------------------------------------------+
- | 209*256*256*256 + 207*256*256 + 224*256 + 40 |
- +----------------------------------------------+
- | 3520061480 |
- +----------------------------------------------+
- 1 row in set (0.00 sec)
没有说谁强谁差的意思,Oracle或者觉得这些函数自己写写很方便的。不过,mysql的这些人性化的函数,在web编程上的确是非常方便。
上一篇: « 新增加站点统计信息
下一篇: 数据文件分布之争,孰是孰非? »
- 发表评论


