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月的方法。
日期常用函数
新闻热点
疑难解答