原创

详解Mysql中日期比较大小的方法

假如有个表product有个字段add_time,它的数据类型为datetime,有人可能会这样写sql:

select 
	*
from
	product as a
where 
	a.`add_time`  = '2019-06-11'

对于这种语句,如果你存储的格式是yyyy-MM-dd这样的,那么是可以这样写的,

如果你存储的格式是:2013-01-12 23:23:56这种格式你就悲剧了,

这时你就可以使用DATE()函数用来返回日期的部分,所以这条sql应该如下处理:

SELECT 
	*
FROM
	product AS a
WHERE 
	DATE(a.`add_time`)  = '2019-06-11'

再来一个,如果你要查询2019年6月份加入的产品呢?

select 
	* 
from
	product 
where 
	date(add_time) 
between 
	'2019-06-01' 
and 
	'2019-06-31'

你还可以这样写:

select 
	* 
from 
	product 
where 
	Year(add_time) = 2019 
and 
	Month(add_time) = 1 

下面介绍一些函数

返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。

select DAYOFWEEK('2019-06-13'); 

结果是 5  星期四

返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。

SELECT WEEKDAY('2019-06-13');


结果是   3 星期四   

返回date的月份中日期,在1到31范围内。

SELECT DAYOFMONTH('2019-06-13'); 

结果是 13

返回date在一年中的日数, 在1到366范围内。

 SELECT DAYOFYEAR('2019-06-13'); 

结果是  164

返回date中的月份,范围1到12。

select MONTH('2019-06-13'); 

结果是6 

返回date的星期名字。

SELECT DAYNAME("2019-06-13");


结果是 thursday 星期四

返回date的月份名字。

SELECT MONTHNAME("2019-06-13"); 


结果是  June  6月

返回date一年中的季度,范围1到4

SELECT QUARTER('2019-06-13'); 

结果是 2  夏季 

 

 

 

 

 

正文到此结束