⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 06-3.html

📁 MySQL4.1.0 中文参考手册
💻 HTML
📖 第 1 页 / 共 5 页
字号:
</PRE>

注意,当参数在两个整数之间时, <CODE>ROUND()</CODE> 的行为取决于 C 库的实现。某些取整到最近的偶数,总是向下取,总是向上取,也可能总是接近于零。如果你需要某种取整类型,应该使用一个明确定义的函数比如 <CODE>TRUNCATE()</CODE> 或 <CODE>FLOOR()</CODE> 代替。

<P></P>

<A NAME="IDX1251"></A>
<DT><CODE>DIV</CODE>
<DD>
整除。
类似于 <CODE>FLOOR()</CODE>,但是它可安全地用于 <CODE>BIGINT</CODE> 值。

<PRE>
mysql&#62; SELECT 5 DIV 2
	-&#62; 2
</PRE>

<CODE>DIV</CODE> 在 MySQL 4.1.0 中新加入。

<P></P>

<A NAME="IDX1252"></A>
<DT><CODE>EXP(X)</CODE>
<DD>
返回值 <CODE>e</CODE> (自然对数的底) 的 <CODE>X</CODE> 次方:

<PRE>
mysql&#62; SELECT EXP(2);
        -&#62; 7.389056
mysql&#62; SELECT EXP(-2);
        -&#62; 0.135335
</PRE>

<A NAME="IDX1253"></A>
<DT><CODE>LN(X)</CODE>
<DD>
返回 <CODE>X</CODE> 的自然对数:

<PRE>
mysql&#62; SELECT LN(2);
        -&#62; 0.693147
mysql&#62; SELECT LN(-2);
        -&#62; NULL
</PRE>

这个函数在 MySQL  4.0.3 被新加入。
在 MySQL 中,它是 <CODE>LOG(X)</CODE> 的同义词。

<P></P>

<A NAME="IDX1254"></A>
<DT><CODE>LOG(X)</CODE>
<DD>
<DT><CODE>LOG(B,X)</CODE>
<DD>
如果以一个参数调用,它返回 <CODE>X</CODE> 的自然对数:

<PRE>
mysql&#62; SELECT LOG(2);
        -&#62; 0.693147
mysql&#62; SELECT LOG(-2);
        -&#62; NULL
</PRE>

如果以两个参数调用,这个函数返回 <CODE>X</CODE> 任意底 <CODE>B</CODE> 的对数:

<PRE>
mysql&#62; SELECT LOG(2,65536);
        -&#62; 16.000000
mysql&#62; SELECT LOG(1,100);
        -&#62; NULL
</PRE>

任意底选项在 MySQL 4.0.3 中被加入。<CODE>LOG(B,X)</CODE> 等价于 <CODE>LOG(X)/LOG(B)</CODE>。

<P></P>

<A NAME="IDX1255"></A>
<DT><CODE>LOG2(X)</CODE>
<DD>
返回 <CODE>X</CODE> 的以 2 为底的对数:

<PRE>
mysql&#62; SELECT LOG2(65536);
        -&#62; 16.000000
mysql&#62; SELECT LOG2(-100);
        -&#62; NULL
</PRE>

<CODE>LOG2()</CODE> 通常可以用于计数出一个数字需要多少个比特位用于存储它。这个函数在 MySQL  4.0.3 中被添加。在更早的版本中,可以使用 <CODE>LOG(X)/LOG(2)</CODE> 来代替它。

<P></P>

<A NAME="IDX1256"></A>
<DT><CODE>LOG10(X)</CODE>
<DD>
返回 <CODE>X</CODE> 以 10 为底的对数:

<PRE>
mysql&#62; SELECT LOG10(2);
        -&#62; 0.301030
mysql&#62; SELECT LOG10(100);
        -&#62; 2.000000
mysql&#62; SELECT LOG10(-100);
        -&#62; NULL
</PRE>

<A NAME="IDX1257"></A>
<A NAME="IDX1258"></A>
<DT><CODE>POW(X,Y)</CODE>
<DD>
<DT><CODE>POWER(X,Y)</CODE>
<DD>
返回 <CODE>X</CODE> 的 <CODE>Y</CODE> 幂:

<PRE>
mysql&#62; SELECT POW(2,2);
        -&#62; 4.000000
mysql&#62; SELECT POW(2,-2);
        -&#62; 0.250000
</PRE>

<A NAME="IDX1259"></A>
<DT><CODE>SQRT(X)</CODE>
  <DD> 返回 <CODE>X</CODE> 的非负平方根: 
    <PRE>
mysql&#62; SELECT SQRT(4);
        -&#62; 2.000000
mysql&#62; SELECT SQRT(20);
        -&#62; 4.472136
</PRE>

<A NAME="IDX1260"></A>
<DT><CODE>PI()</CODE>
<DD>
返回 PI 值(圆周率)。缺少显示 5 位小数,但是在 MySQL 内部,为 PI 使用全部的双精度。

<PRE>
mysql&#62; SELECT PI();
        -&#62; 3.141593
mysql&#62; SELECT PI()+0.000000000000000000;
        -&#62; 3.141592653589793116
</PRE>

<A NAME="IDX1261"></A>
<DT><CODE>COS(X)</CODE>
<DD>
返回 <CODE>X</CODE> 的余弦,在这里,<CODE>X</CODE> 以弧度给出:

<PRE>
mysql&#62; SELECT COS(PI());
        -&#62; -1.000000
</PRE>

<A NAME="IDX1262"></A>
<DT><CODE>SIN(X)</CODE>
<DD>
返回 <CODE>X</CODE> 的正弦,在这里,<CODE>X</CODE> 以弧度给出:

<PRE>
mysql&#62; SELECT SIN(PI());
        -&#62; 0.000000
</PRE>

<A NAME="IDX1263"></A>
<DT><CODE>TAN(X)</CODE>
<DD>
返回 <CODE>X</CODE> 的正切,在这里,<CODE>X</CODE> 以弧度给出:

<PRE>
mysql&#62; SELECT TAN(PI()+1);
        -&#62; 1.557408
</PRE>

<A NAME="IDX1264"></A>
<DT><CODE>ACOS(X)</CODE>
<DD>
返回 <CODE>X</CODE> 的反余弦,更确切地说,返回余弦值为 <CODE>X</CODE> 的值。如果 <CODE>X</CODE> 不在 <CODE>-1</CODE> 到 <CODE>1</CODE> 之间的范围内,返回 <CODE>NULL</CODE>:

<PRE>
mysql&#62; SELECT ACOS(1);
        -&#62; 0.000000
mysql&#62; SELECT ACOS(1.0001);
        -&#62; NULL
mysql&#62; SELECT ACOS(0);
        -&#62; 1.570796
</PRE>

<A NAME="IDX1265"></A>
<DT><CODE>ASIN(X)</CODE>
<DD>
返回 <CODE>X</CODE> 的反正弦,更确切地说,返回正弦值为 <CODE>X</CODE> 的值。如果 <CODE>X</CODE> 不在 <CODE>-1</CODE> 到 <CODE>1</CODE> 之间的范围内,返回 <CODE>NULL</CODE>:

<PRE>
mysql&#62; SELECT ASIN(0.2);
        -&#62; 0.201358
mysql&#62; SELECT ASIN('foo');
        -&#62; 0.000000
</PRE>

<A NAME="IDX1266"></A>
<DT><CODE>ATAN(X)</CODE>
<DD>
返回 <CODE>X</CODE> 的反正切, 更确切地说,返回正切值为 <CODE>X</CODE> 的值:

<PRE>
mysql&#62; SELECT ATAN(2);
        -&#62; 1.107149
mysql&#62; SELECT ATAN(-2);
        -&#62; -1.107149
</PRE>

<A NAME="IDX1267"></A>
<DT><CODE>ATAN(Y,X)</CODE>
<DD>
<DT><CODE>ATAN2(Y,X)</CODE>
<DD>
返回两个变量 <CODE>X</CODE> 和 <CODE>Y</CODE> 的反正切。它类似于计算 <CODE>Y / X</CODE> 的反正切,除了两个参数的符号用于决定结果的象限:

<PRE>
mysql&#62; SELECT ATAN(-2,2);
        -&#62; -0.785398
mysql&#62; SELECT ATAN2(PI(),0);
        -&#62; 1.570796
</PRE>

<A NAME="IDX1268"></A>
<DT><CODE>COT(X)</CODE>
<DD>
返回 <CODE>X</CODE> 的余切:

<PRE>
mysql&#62; SELECT COT(12);
        -&#62; -1.57267341
mysql&#62; SELECT COT(0);
        -&#62; NULL
</PRE>

<A NAME="IDX1269"></A>
<DT><CODE>RAND()</CODE>
<DD>
<DT><CODE>RAND(N)</CODE>
<DD>
返回一个范围在 <CODE>0</CODE> 到 <CODE>1.0</CODE> 之间的随机浮点值。
如果一个整数参数 <CODE>N</CODE> 被指定,它被当做种子值使用(用于产生一个可重复的数值):

<PRE>
mysql&#62; SELECT RAND();
        -&#62; 0.9233482386203
mysql&#62; SELECT RAND(20);
        -&#62; 0.15888261251047
mysql&#62; SELECT RAND(20);
        -&#62; 0.15888261251047
mysql&#62; SELECT RAND();
        -&#62; 0.63553050033332
mysql&#62; SELECT RAND();
        -&#62; 0.70100469486881
</PRE>

在一个 <CODE>ORDER BY</CODE> 子句中,不可以使用 <CODE>RAND()</CODE> 值使用一个列,因为 <CODE>ORDER BY</CODE> 将多次重复计算列。从 MySQL 3.23 开始,你可以使用:<CODE>SELECT * FROM table_name ORDER BY RAND()</CODE>,这有利于得到一个来自 <CODE>SELECT * FROM table1,table2 WHERE a=b AND c&#60;d ORDER BY RAND() LIMIT 1000</CODE> 的集合中的随机样本。

注意,在一个 <CODE>WHERE</CODE> 子句中的 <CODE>RAND()</CODE> 将在每次 <CODE>WHERE</CODE> 执行时被重新计算。

<CODE>RAND()</CODE> 并不是预期完美的随机数发生器,但是可以代替做为产生特别的随机数一个快速的方法,这样便于在两个不同平台下的同一 MySQL 版本间移动。

<P></P>

<A NAME="IDX1270"></A>
<DT><CODE>LEAST(X,Y,...)</CODE>
<DD>
有两个或更多个参数,返回最小(最小值)的参数。参数使用下列规则进行比较:

<UL>
<LI>
如果返回值用于一个 <CODE>INTEGER</CODE> 语境,或所有的参数是整数值,它们作为整数比较。

<LI>
如果返回值用于一个 <CODE>REAL</CODE> 语境,或所有的参数均是实数值,它们作为实数被比较。

<LI>
如果任何一个参数是字母大小写敏感的,参数作为大小写敏感的字符串进行比较。

<LI>
在其它情况下,参数做为忽略大小写的字符中进行比较:
</UL>


<PRE>
mysql&#62; SELECT LEAST(2,0);
        -&#62; 0
mysql&#62; SELECT LEAST(34.0,3.0,5.0,767.0);
        -&#62; 3.0
mysql&#62; SELECT LEAST("B","A","C");
        -&#62; "A"
</PRE>

在早于 MySQL 3.22.5 的版本中,你可以使用 <CODE>MIN()</CODE> 代替 <CODE>LEAST</CODE>。

<P></P>

<A NAME="IDX1271"></A>
<DT><CODE>GREATEST(X,Y,...)</CODE>
<DD>
返回最大(最大值)参数。
参数使用与 <CODE>LEAST</CODE> 一致的规则进行比较:

<PRE>
mysql&#62; SELECT GREATEST(2,0);
        -&#62; 2
mysql&#62; SELECT GREATEST(34.0,3.0,5.0,767.0);
        -&#62; 767.0
mysql&#62; SELECT GREATEST("B","A","C");
        -&#62; "C"
</PRE>

在早于 MySQL 3.22.5 的版本中,可以使用 <CODE>MAX()</CODE> 代替 <CODE>GREATEST</CODE>。

<P></P>

<A NAME="IDX1272"></A>
<DT><CODE>DEGREES(X)</CODE>
<DD>
将参数 <CODE>X</CODE> 从弧度转换为角度,然后返回:

<PRE>
mysql&#62; SELECT DEGREES(PI());
        -&#62; 180.000000
</PRE>

<A NAME="IDX1273"></A>
<DT><CODE>RADIANS(X)</CODE>
<DD>
将参数 <CODE>X</CODE> 从角度转换为弧度,然后返回:

<PRE>
mysql&#62; SELECT RADIANS(90);
        -&#62; 1.570796
</PRE>

<A NAME="IDX1274"></A>
<DT><CODE>TRUNCATE(X,D)</CODE>
<DD>
将数值 <CODE>X</CODE> 截到 <CODE>D</CODE> 个小数,然后返回。如果 <CODE>D</CODE> 为 <CODE>0</CODE>,结果将不包含小数点和小数部分:

<PRE>
mysql&#62; SELECT TRUNCATE(1.223,1);
        -&#62; 1.2
mysql&#62; SELECT TRUNCATE(1.999,1);
        -&#62; 1.9
mysql&#62; SELECT TRUNCATE(1.999,0);
        -&#62; 1
mysql&#62; SELECT TRUNCATE(-1.999,1);
        -&#62; -1.9
</PRE>

从 MySQL 3.23.51 开始,所有数字被四舍五入到零。

如果 <CODE>D</CODE> 是负数,那么数字的整个部分被对准零位输出:

<PRE>
mysql&#62; SELECT TRUNCATE(122,-2);
       -&#62; 100
</PRE>

注意, 十进值小数在计算机中通常不以精确数字存储,而是双精度型的值,你可能会被下列结果所愚弄:

<A NAME="IDX1275"></A>

<PRE>
mysql&#62; SELECT TRUNCATE(10.28*100,0);
       -&#62; 1027
</PRE>

上面结果的发生是因为 10.28 实际上是以某些像 10.2799999999999999 的形式被存储的。
</DL>



<H3><A NAME="Date_and_time_functions"></A>6.3.4  日期和时间函数</H3>

<P>
<A NAME="IDX1276"></A>
<A NAME="IDX1277"></A>

</P>
<P>
对于每个类型的值范围以及日期和时间值有效指定格式,请查看章节 <A HREF="06-2.html#Date_and_time_types">6.2.2  Date 和 Time 类型</A>。
</P>

<P>
这里是一个使用日期函数的例子。下面的查询选择所有 <CODE>date_col</CODE> 值在最后 30 天内的记录。
</P>

<PRE>
mysql&#62; SELECT something FROM tbl_name
           WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) &#60;= 30;
</PRE>

<DL COMPACT>

<DT><CODE>DAYOFWEEK(date)</CODE>
<DD>
<A NAME="IDX1278"></A>
 
返回 <CODE>date</CODE> 的星期索引(<CODE>1</CODE> = Sunday, <CODE>2</CODE> = Monday, ... <CODE>7</CODE> =
Saturday)。索引值符合 ODBC 的标准。


<PRE>
mysql&#62; SELECT DAYOFWEEK('1998-02-03');
        -&#62; 3
</PRE>

<A NAME="IDX1279"></A>
<DT><CODE>WEEKDAY(date)</CODE>
<DD>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -