生日字段類型 datetime,能夠用mysql mysql
DATE_FORMAT()
函數直接查詢。sql
本日生日:框架
$condition['_string']='DATE_FORMAT(birth,"%m-%d")="'.date('m-d',time()).'"';
本週生日:函數
需計算出本週的頭一天,最後一天,後來發現,用between方法在跨年的時候會出問題。改用in方法。get
function get_week(){ //$sdefaultDate = date("Y-m-d"); $sdefaultDate = date("Y-m-d"); //$first =1 表示每週星期一爲開始日期 0表示每週日爲開始日期 $first=1; //獲取當前周的第幾天 週日是 0 週一到週六是 1 - 6 $w=date('w',strtotime($sdefaultDate)); //獲取本週開始日期,若是$w是0,則表示週日,減去 6 天 $week_start=date('Y-m-d',strtotime("$sdefaultDate -".($w ? $w - $first : 6).' days')); //本週結束日期 $week=array(); for($i=0;$i<7;$i++){ if($i>0){ $week[$i]=date('Y-m-d',strtotime("$week_start +$i days")); }else{ $week[$i]=$week_start; } $week_date[$i]='"'.substr($week[$i],5,10).'"'; } return $week_date; }
$week=get_week(); $week_str=implode(',',$week); $condition['_string']='DATE_FORMAT(birth,"%m-%d") IN ('.$week_str.')';
本月生日:string
$condition['_string']='DATE_FORMAT(birth,"%m")="'.date('m',time()).'"';
以上爲tp3.2寫法,其餘框架本身修改。it