我正在为员工编写时间注册表。我有两列。 Stamp_in
和Stamp_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 ...
答案 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部分。比抱歉更安全。