生日字段类型 datetime,可以用mysql
DATE_FORMAT()
函数直接查询。
本日生日:
$condition['_string']='DATE_FORMAT(birth,"%m-%d")="'.date('m-d',time()).'"';
本周生日:
需计算出本周的头一天,最后一天,后来发现,用between方法在跨年的时候会出问题。改用in方法。
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.')';
本月生日:
$condition['_string']='DATE_FORMAT(birth,"%m")="'.date('m',time()).'"';
以上为tp3.2写法,其他框架自己修改。