日期匹配循环

时间:2015-02-03 08:07:06

标签: php mysql

我正在为员工编写时间注册表。我有两列。 Stamp_inStamp_Out。当一个人员登记时,DateTime值存储在db中。注册时看起来像$datetime_now = date('Y-m-d H:i:s');并且相等。但是在注册时,stamp_out列中的值将为:0000-00-00 00:00:00。在stamp_in列中注册时也一样。

现在,当我循环播放时,我喜欢在同一天匹配日期以在同一行上打印,但我不希望打印“空”日期。

这段代码应该如何?

这是我到目前为止所得到的:

PHP

//Loop out the result
while ($row = $stmt->fetch()) {
  echo "<tr>";
    echo "<td>" .$row['usr_stamp_in']."</td>";
    echo "<td>" .$row['usr_stamp_in']."</td>";
  echo "</tr>";
}

我试过

if($row['usr_stamp_in'] != "0000-00-00 00:00:00"{
  while($row ...

2 个答案:

答案 0 :(得分:1)

您应该使用不等于运算符<>在SQL查询中执行过滤器部分。 事情看起来像SELECT * FROM employee_table WHERE usr_stamp_in <> '0000-00-00 00:00:00'

更确切地说,有一个关于MySQL select where column is not empty

的主题

答案 1 :(得分:0)

您应该在while循环中执行if语句:

//Loop out the result
while ($row = $stmt->fetch()) {
    if ($row['usr_stamp_in'] != "0000-00-00 00:00:00") {
        echo "<tr>";
        echo "<td>" .$row['usr_stamp_in']."</td>";
        echo "<td>" .$row['usr_stamp_in']."</td>";
        echo "</tr>";
    }
}

您也可以在mysql中执行以下操作:

SELECT *
FROM users
WHERE usr_tstamp_in != '0000-00-00 00:00:00'
ORDER BY usr_tstamp_in DESC;

这将从&#39;用户&#39;中选择所有记录。没有usr_tstamp_in值的表&#39; 0000-00-00 00:00:00&#39;并按日期从最新到最旧订购这些记录。

我仍然建议你也使用PHP部分。比抱歉更安全。