mysql实用时间日期函数

  • Jesse
  • 2016-10-26 16:37:00
  • 488

时间戳字段名: timestamp_name (:1470651537)

时间日期字段名: datetime_name (:2016-08-08 18:18:57)

 

今天

select * from 表名 where to_days(datetime_name)=to_days(now());

 

昨天

SELECT * FROM `表名` where TO_DAYS(NOW()) TO_DAYS(datetime_name) = 1;

/*DATEDIFF(now() , FROM_UNIXTIME(`timestamp_name`)) = 1; //时间字段 存储类型为时间戳*/

 

7

SELECT * FROM `表名` where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(datetime_name);

/*DATEDIFF(now() , FROM_UNIXTIME(`timestamp_name`)) = 7; //时间字段 存储类型为时间戳*/

 

30

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(datetime_name);

 

本月

SELECT * FROM 表名 WHERE DATE_FORMAT(datetime_name, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m');

SELECT * FROM 表名 WHERE FROM_UNIXTIME(timestamp_name, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m');

 

mysql实用日期时间函数:

获取当前日期时间:sysdate()now()

获取当前日期时间戳:current_timestamp()

 

to_days:给定一个日期,返回一个(从0000-00-01开始计算的)天数。

例如 select to_days("2016-10-20");//返回736622

 

time_to_sec:时间转换为秒

例如 select time_to_sec('01:00:05'); 返回 3605

 

sec_to_time:秒转换为时间

select sec_to_time(3605); 返回 01:00:05

 

DATEDIFF:函数返回两个日期之间的天数。

例如 select datediff('2016-09-08', '2016-08-08');返回31

 

注意:返回的结果是第一个参数减第二个参数,当一个小于第二个时,为负数

 

DATE_SUB:函数从日期减去指定的时间间隔。

例如 SELECTDATE_SUB("2016-10-20", INTERVAL 7 DAY);返回2016-10-13

DATE_ADD:为日期增加一个时间间隔

 

例如 select date_add(now(),interval 2 days);显示后天的日期时间

 

FROM_UNIXTIME:返回一个表示形式的unix_timestamp(时间戳) 参数为“YYYY-MM-DD HHMMSS'YYYYMMDDHHMMSS格式的值,根据对于参数转换。

例如 select FROM_UNIXTIME(1476892800,'%Y-%m-%d %H:%i') 返回2016-10-20 15:30,UNIX_TIMESTAMP相反作用,没有第二个参数,默认为这种格式