当前位置:嗨网首页>书籍在线阅读

04-日期和时间函数

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

MySQL 中另外一类很重要的函数就是数值函数,这些函数能处理很多数值方面的运算。可以想象,如果没有这些函数的支持,用户在编写有关数值运算方面的代码时将会困难重重。举个例子,如果没有 ABS 函数,要取一个数值的绝对值,就需要进行好多次判断才能返回这个值,而数值函数能够大大提高用户的工作效率。表5-2中列出了在MySQL中会经常使用的数值函数。

表5-2 MySQL中的常用数值函数

figure_0102_0043.jpg 下面将结合实例对这些函数进行介绍。

ABS(x)函数:返回x的绝对值。

下例中显示了对正数和负数分别取绝对值之后的结果。

mysql> select ABS(-0.8) ,ABS(0.8);

+-----------+----------+

| ABS(-0.8) | ABS(0.8) |

+-----------+----------+

| 0.8 | 0.8 |

+-----------+----------+

1 row in set (0.09 sec)

CEIL(x)函数:返回大于x的最小整数。

下例中显示了对0.8和-0.8分别CEIL后的结果。

mysql> select CEIL(-0.8),CEIL(0.8);

+------------+-----------+

| CEIL(-0.8) | CEIL(0.8) |

+------------+-----------+

| 0 |1|

+------------+-----------+

1 row in set (0.03 sec)

FLOOR(x)函数:返回小于x的最大整数,和CEIL的用法刚好相反。

下例中显示了对0.8和-0.8分别FLOOR后的结果。

mysql> select FLOOR(-0.8), FLOOR(0.8);

+-------------+------------+

| FLOOR(-0.8) | FLOOR(0.8) |

+-------------+------------+

| -1 |0|

+-------------+------------+

1 row in set (0.00 sec)

MOD(x,y)函数:返回x/y的模。

和x%y的结果相同,模数和被模数任何一个为NULL结果都为NULL,如下例所示:

mysql> select MOD(15,10),MOD(1,11),MOD(NULL,10);

+------------+-----------+--------------+

| MOD(15,10) | MOD(1,11) | MOD(NULL,10) |

+------------+-----------+--------------+

| 5 | 1 | NULL |

+------------+-----------+--------------+

1 row in set (0.00 sec)

RAND()函数:返回0~1内的随机值。

每次执行结果都不一样,如下例所示:

mysql> select RAND(),RAND();

+------------------+------------------+

| RAND() | RAND() |

+------------------+------------------+

| 0.12090325459922 | 0.83369727882901 |

+------------------+------------------+

1 row in set (0.00 sec)

利用此函数可以取任意指定范围内的随机数,比如需要产生 0~100 内的任意随机整数,可以进行如下操作:

mysql> select ceil(100rand()),ceil(100rand());

+------------------+------------------+

| ceil(100rand()) | ceil(100rand()) |

+------------------+------------------+

| 91 | 15 |

+------------------+------------------+

1 row in set (0.00 sec)

ROUND(x,y)函数:返回参数x的四舍五入的有y位小数的值。

如果是整数,将会保留y位数量的0;如果不写y,则默认y为0,即将x四舍五入后取整。适合于将所有数字保留同样小数位的情况,如下例所示:

mysql> select ROUND(1.1),ROUND(1.1,2),ROUND(1,2);

+------------+--------------+------------+

| ROUND(1.1) | ROUND(1.1,2) | ROUND(1,2) |

+------------+--------------+------------+

| 1 | 1.10 | 1.00 |

+------------+--------------+------------+

1 row in set (0.00 sec)

TRUNCATE(x,y)函数:返回数字x截断为y位小数的结果。

注意TRUNCATE和ROUND的区别在于TRUNCATE仅仅是截断,而不进行四舍五入。下例中描述了二者的区别:

mysql> select ROUND(1.235,2),TRUNCATE(1.235,2);

+----------------+-------------------+

| ROUND(1.235,2) | TRUNCATE(1.235,2) |

+----------------+-------------------+

| 1.24 | 1.23 |

+----------------+-------------------+

1 row in set (0.00 sec)