MySQL日期和时间处理函数应用总结

来源:互联网 发布:spss调查问卷数据录入 编辑:程序博客网 时间:2024/04/30 16:23

MySQL对于日期的处理应该遵循:
1、无论如何,日期的格式必须为yyyy-mm-dd,虽然其他格式也行,但是这种方式排出了多义性,(04/05/2016)
2、总是应该使用4位数字的年份。虽然支持2位数字的年份,但是使用完整的4位数字年份更可靠。

简单的日期比较

select cust_id,order_num from orders where order_date = ‘2015-09-01’;

思考:一般情况下,使用这种方式可以检索的数据,但是, where order_date = ‘2015-09-01’是可靠的吗?

这里写图片描述

order_date的数据类型为datetime,这种类型储存日期及时间值,样例表中的值全都具有时间值00:00:00,
但在实际中,可能并不总是这样。如果利用当前日期和时间存储订单日期(不仅知道订单日期,还知道下订单当天的时间),怎么办?
例如:存储的order_date=’2005-09-01 11:35:26’,则where order_date = ‘2015-09-01’失败

这里写图片描述

于是 MySQL时间处理函数就有用了。

我们指示MySQL仅将给出的日期与列中的日期部分进行比较,而不是将给出的日期与整个列值进行比较
select cust_id,order_num from orders where Date(order_date)= ‘2005-09-01’

这里写图片描述

注意:
如果要的仅仅是日期,请使用Date()函数,即使你知道相对应的列只包含日期也应该如此。这样的话,即使以后由于某种原由使用了时间值,你的sql代码也不用改变。当然也是存在Time()函数,在你只想要时间时就要使用它

检索日期范围

思考:在某些情况,我们如果想要检索2005年9月份的所有订单。简单的相等测试就不行了。
解决:两种方式。
一、select cust_id , order_num,order_date from orders where Date(order_date) between ‘2005-09-01’ AND ‘2005-09-30’;
二、select cust_id , order_num,order_date from orders where Year(order_date) =2005 and Month(order_date) = 9;
这里写图片描述

注意:一般情况下,我们都是利用第二种进行,因为第二种方式,不需要考虑每个月有多少天,或不需要考虑闰年2月的方法。

日期常用函数
这里写图片描述

0 0
原创粉丝点击