CONCAT日期问题

时间:2016-11-30 01:38:46

标签: php mysql date

我的数据库有几个字段,月份和日期没有前导零。我试图将y-m-d的记录与今天的日期进行比较。大于或等于显示绿灯图像,否则为红灯。它不工作!帮助!

    $q = "SELECT * FROM pec_mbbtmssgs WHERE activity='bike' AND CONCAT(`y`,'-','m','-','d')  >= date('Y-n-j')";
$r = mysql_query($q);
$row = mysql_fetch_assoc($r);
$activity = $row['activity'];

if($activity == "bike") {
    $image = "greenlight25";
}
else {
    $image = "redlight25";
}

echo '<img src=http://img/' . $image . '.gif />';
?>

2 个答案:

答案 0 :(得分:0)

$q = "SELECT * FROM pec_mbbtmssgs WHERE activity='bike' AND unix_timestamp(CONCAT(`y`,'-',`m`,'-',`d`))  >= unix_timestamp(CURDATE())";

答案 1 :(得分:0)

您对CONCAT()的使用有点偏离,因为数据库列应该包含在反引号中,或者根本不包含任何内容,以及单引号'中的字符串/分隔符。

您也可以DATE(NOW())获取当前日期,然后与此进行比较。然后,您将DATE()CONCAT()的结果一起使用,因此它就像这样

SELECT * 
FROM pec_mbbtmssgs 
WHERE activity='bike' 
  AND DATE(CONCAT(y, '-', m, '-', d)) >= DATE(NOW()) 

更简单的方法是将日期存储在DATE类型列中,而不是3个单独的列。您始终可以提取所需的特定信息(例如,即使您的值为2016-11-30,也可以提取月份。)