mysql实用时间日期函数
时间戳字段名: 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 HH:MM:SS'或YYYYMMDDHHMMSS格式的值,根据对于参数转换。
例如 select FROM_UNIXTIME(1476892800,'%Y-%m-%d %H:%i') 返回2016-10-20 15:30,与UNIX_TIMESTAMP相反作用,没有第二个参数,默认为这种格式