SQL-个人学习过的有用小sql

当天的数据
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 表名 DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date(时间字段)

本月
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;

下面的sql适用于计算带小数的天数,小时数差等

#两日期/时间之间相差的天数: 
To_Days(end_time)-To_Days(start_time) 
 

 
#两日期/时间之间相差的秒数: 
SELECT UNIX_TIMESTAMP(end_time)- UNIX_TIMESTAMP(start_time); 
   
#两日期/时间之间相差的时分数: 
   
SELECT SEC_TO_TIME(UNIX_TIMESTAMP(end_time)- UNIX_TIMESTAMP(start_time));

最好的办法是直接用“+”,“-”    计算,目前的版本都支持了。

比如:SELECT    *    FROM    Table_Name    WHERE    loginDate    <    NOW()    -10    *    60;

计算两个时间查sql,结果为带小数的天数,而不是只返回整形天数或者月数什么的。
如下:
 ((UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(created_time))/86400)

本文出自 “重新来学JAVA” 博客,转载请与作者联系!

你可能感兴趣的:(SQL-个人学习过的有用小sql)