今天
select * from 表名 where to_days(時間欄位名) = to_days(now());
昨天
Select * FROM 表名 Where TO_DAYS( NOW( ) ) – TO_DAYS( 時間欄位名)
<= 1
7天前 如果是7天后就是DATE_ADD函數
Select * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY)
<= date(時間欄位名)
近30天前
Select * FROM 表名 where 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
//時間轉成年月日時分秒
select date_format(now(),'%Y%m%d%H%i%S')
//時間轉成年月日
select date_format(now(),'%Y%m%d')
//去年此時
select DATE_ADD(now(), Interval -1 year)
//上月此時
select DATE_ADD(now(), Interval -1 month)
//昨天此時
select DATE_ADD(now(), Interval -1 day)
//一小時前
select DATE_ADD(now(), Interval -1 hour)
//一分鐘前
select DATE_ADD(now(), Interval -1 minute)
//一秒鐘前
select DATE_ADD(now(), Interval -1 second)
//昨天(年月日)
select date_format(DATE_ADD(now(), Interval 1 day),'%Y%m%d')
//上個月第一天和最後一天
select date_sub(date_sub(date_format(now(),'%Y%m%d'),interval extract( day from now())-1 day),interval 1 month);
select date_sub(date_sub(date_format(now(),'%Y%m%d'),interval extract(day from now()) day),interval 0 month);
//某個字串
select date_format(DATE_ADD('20090605123020', Interval 20 minute),'%Y%m%d')
//第幾周
select weekofyear( now() )
select weekofyear('20090606')
在mysql中,會把'20090707123050'和'20090707'格式的字串作為date類型轉換。
在mysql中,沒有類似oracle的to_char(num,format)函數,所以涉及到數字前面補0的情況需要特殊處理。
如select left(concat('00'),@num),3)就會顯示三位元字的字串, @num=1時顯示001,為123是顯示123。
CONCAT(YEAR(a.createtime),LEFT(CONCAT('0',WEEKOFYEAR(a.createtime)),2))
還有FROM_UNIXTIME 這個可以數字轉日期