日期和时间处理函数

表结构:
desc orders;
+------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+----------------+
| order_num | int | NO | PRI | NULL | auto_increment |
| order_date | datetime | NO | | NULL | |
| cust_id | int | NO | MUL | NULL | |
+------------+----------+------+-----+---------+----------------+

表数据:
SELECT * FROM orders;
+-----------+---------------------+---------+
| order_num | order_date | cust_id |
+-----------+---------------------+---------+
| 20005 | 2005-09-01 00:00:00 | 10001 |
| 20006 | 2005-09-12 00:00:00 | 10003 |
| 20007 | 2005-09-30 00:00:00 | 10004 |
| 20008 | 2005-10-03 00:00:00 | 10005 |
| 20009 | 2005-10-08 00:00:00 | 10001 |
+-----------+---------------------+---------+

如何根据2005年9月1日这个日期查看当天的订单编号?
SELECT order_mun FROM orders WHERE order_date='2015-09-01'
这个语句虽然能查出2005年9月1日当天的订单编号,但并不可靠,order_date这个字段是datetime类型,如果是这样的内容2005-09-01 11:36:01,这个语句就查不出来了

Date()函数,返回日期时间的日期部分
SELECT * FROM orders WHERE Date(order_date) = '2005-09-01';

Time()函数,返回一个日期时间的时间部分
Year()函数,从一个日期中返回年份的函数
Month()函数,返回一个日期的月份部分

查出2005年9月1到30日期间所有的订单
SELECT cust_id, order_num FROM orders WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30'
另一种方法
SELECT * FROM orders WHERE Year(order_date) = 2005 AND Month(order_date) = 9;

posted @ 2020-09-23 17:41  bibicode  阅读(409)  评论(0)    收藏  举报