mysql 时间戳 今天 昨天 7天 30天 及未来时间

MYSQL部分:

时间戳转成日期格式 from_unixtime(时间字段名);

今天

select * from 表名 where to_days(时间字段名) = to_days(now());

昨天

SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 

7天

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)

近30天

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)
30天之前的

SELECT* FROM_UNIXTIME(created/1000) FROM 表名  WHERE DATEDIFF ( DATE_FORMAT( NOW( ) , '%Y%m%d' ) , DATE_FORMAT( FROM_UNIXTIME(时间字段名), '%Y%m%d' ) ) >30 本月
SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' ) 上一月 SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1

三个月之前

SELECT FROM_UNIXTIME(created/1000) FROM `device_light_history`  WHERE PERIOD_DIFF( DATE_FORMAT( NOW( ) , '%Y%m' ) , DATE_FORMAT( FROM_UNIXTIME(created/1000), '%Y%m' ) ) >1

 实际应用

where to_days(from_unixtime(字段))=to_days(now())   今天

where to_days(now()) - to_days(from_unixtime(字段))=1  昨天

where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(from_unixtime(字段))  最近7天

where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(from_unixtime(字段)) 最近30天

未来30天的记录

SELECT * 
FROM `islet_labappointment` 
WHERE DATE( FROM_UNIXTIME( `字段名称` ) ) > DATE_SUB( CURDATE( ) , INTERVAL 30 
DAY ) 
LIMIT 0 , 30

 

mysql时间戳timestamp,查询转日期类型

#获取时间戳

SELECT CURRENT_TIMESTAMP(1);

SELECT CURRENT_TIMESTAMP(3);

#先格式化,然后转为时间格式

SELECT STR_TO_DATE(DATE_FORMAT(CURRENT_TIMESTAMP(1), '%Y-%c-%d %h:%i:%s' ) ,'%Y-%m-%d %H:%i:%s'

 

posted @ 2020-04-22 13:23  雪竹子  阅读(3622)  评论(0编辑  收藏  举报