MySQL学习足迹记录09--常用文本,日期,数值处理函数(二)

2014-11-24 17:07:32 · 作者: · 浏览: 1
即代表了它们的功能,无需刻意记忆. AddDate(),AddTime(),CurDate,CurTime(),Date(). DateDiff():计算两个日期之差 Date_Add(),Date_Format(),Day(),DayOfWeek(),Hour(),Month(),Now(),Second(),Time(),Year() *MySQL使用的日期格式yyyy-mm-dd Examples: 先列出orders所有的日期数据 mysql> SELECT order_date FROM orders; +---------------------+ | order_date | +---------------------+ | 2005-09-01 00:00:00 | | 2005-09-12 00:00:00 | | 2005-09-30 00:00:00 | | 2005-10-03 00:00:00 | | 2005-10-08 00:00:00 | +---------------------+ 5 rows in set (0.00 sec) mysql> SELECT cust_id,order_num -> FROM orders -> WHERE order_date = '2005-09-01'; # WHERE order_date = '2005-09-01'并不可靠 +---------+-----------+ #假如order_date的值为‘2005-09-01 11:30:05’则检索失败 | cust_id | order_num | +---------+-----------+ | 10001 | 20005 | +---------+-----------+ 1 row in set (0.00 sec)

解决办法,用Date()函数
 mysql> SELECT cust_id,order_num
         -> FROM orders
         -> WHERE Date(order_date) = '2005-09-01';
+---------+-----------+
| cust_id | order_num |
+---------+-----------+
|   10001 |     20005 |
+---------+-----------+
1 row in set (0.00 sec)

练习:检索2005年9月的所有订单
法一:
   mysql> SELECT cust_id,order_num
           -> FROM orders
           -> WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30';
+---------+-----------+
| cust_id | order_num |
+---------+-----------+
|   10001 |     20005 |
|   10003 |     20006 |
|   10004 |     20007 |
+---------+-----------+
3 rows in set (0.00 sec)

法二:(无需记住每月有多少天,而且不需要操心闰年2月)
mysql> SELECT cust_id,order_num FROM orders
         -> WHERE Year(order_date) = 2005 AND Month(order_date) = 9;
+---------+-----------+
| cust_id | order_num |
+---------+-----------+
|   10001 |     20005 |
|   10003 |     20006 |
|   10004 |     20007 |
+---------+-----------+
3 rows in set (0.00 sec)

3.数值处理函数
Abs(),Cos(),Sin(),Sqrt(),Tan(),Pi()
Mod():返回除操作的余数
Exp(): 返回一个数的指数值