php搜索日期字符串

时间:2011-12-13 12:28:59

标签: php mysql dob

我的DOB格式yyyy-mm-dd的客户列表很少 如何按出生日期搜索客户,即使我先输入年份,月份或日期,也会显示结果。

目前,我需要使用格式yyyy-mm-dd来搜索它们。

$result = $db->query("SELECT f_name, l_name, dob, email FROM user WHERE dob LIKE'$keyword%' OR f_name LIKE '$keyword%' OR l_name LIKE '$keyword%' LIMIT 100")

if($result) {
  if($db->affected_rows()!= 0){

     // echo the result

  }
}

2 个答案:

答案 0 :(得分:2)

而不是LIKE,您可以使用YEAR()MONTH()DAY()进行比较。请确保您已正确转义$keyword ...

$result = $db->query("
  SELECT f_name, l_name, dob, email
  FROM user 
  WHERE
    // The year, month, or day can be an exact match (note parentheses)
    (YEAR(dob) = '$keyword' OR MONTH(dob) = '$keyword' OR DAY(dob) = '$keyword')
    // Or the full yyyy-mm-dd date can be an exact match
    OR DATE(dob) = '$keyword'
    // OR UK date format
    OR DATE(dob) = STR_TO_DATE('$keyword', '%d/%m/%y')
    // or the rest of your conditions...
    OR f_name LIKE '$keyword%' OR l_name LIKE '$keyword%' LIMIT 100"
);

编辑:在整数日期组件周围添加引号,以避免在搜索字符串而不是数字时出现语法错误。

答案 1 :(得分:1)

在我看来,最好用PHP标准化日期:

$date = strtotime($keyword);
$result = $db->query('
  SELECT f_name, l_name, dob, email
  FROM user 
  WHERE
    f_name LIKE "$keyword%"
    OR l_name LIKE "$keyword%"
    '.($date&&$date!=-1?'OR dob="'.date('Y-m-d',$date).'"':'').'
  LIMIT 100
');