[英]Null field treatment on PHP
我有一个名为hr events
的表,该表在一个字段中输出某个雇员休产假的时间。
在return_date
字段上,它显示员工休产假的日期。
如果员工还没有回来,我们将设置一个默认值,如下面的CREATE
语句所示: CREATE (return_date DATE NOT NULL DEFAULT '0000-00-00',)
;
该报告的最后一个字段应显示该员工活动的最终返回日期: (c.return_date ,'%d/%m/%Y') AS c_return_date
。 作为一个SQL初学者,我为此感到c.return_date
:每当我们有一个(default 0000-00-00)
值时, c.return_date
带来某种偶然的日期,例如:例如12/01/1999,这是一个NULL领域。
我一直在尝试使用ISNULL(c.return_date, '')
或ISNULL(c.return_date, 0)
来对待它,但是它不起作用。 在上述情况下,最后一个字段应该为空白,但不能为'12 / 01/1999'。
至于PHP,这就是为什么我要编辑此主题,我认为可以通过解决php脚本中的这个问题来解决这个问题:
<?php
$retorno = (!empty($row['c_return_date'])) ? $row['c_return_date'] : $row['a_return_date'];
$data = explode('-', $retorno);
echo date("d/m/Y", mktime(0, 0, 0, $data[1], $data[2] + 1, $data[0]));
?>
我目前正在尝试弄清楚(实际上,更多地弄清楚了这个脚本是如何工作的)如何验证这个脚本,以防出现诸如0000-00-00
之类的退货日期(这意味着员工还没有回来)。她的活动),而不显示此类输出(例如12/01/1999)。
我不认为这是一个随机的约会。 这只是MySQL中的0000-00-00
代表的日期。
我会使用NULL:
create table hr_events (return_date date default null);
这样,您可以查询列出以下内容:
select * from hr_events where return_date is null;
获取尚未设置return_date
所有hr_events
行。
我建议允许您的日期字段为空:
CREATE TABLE yourTable (return_date DATE, ...)
然后,允许null
在语义上意味着该雇员尚未休产假。 您可以使用COALESCE
将该null
值替换为某些默认日期:
SELECT COALESCE(return_date, '1999-12-01') AS return_date
FROM yourTable;
毕竟,这是一个php脚本问题。
<?php
$retorno = (!empty($row['c_return_date'])) ? $row['c_return_date'] : $row['a_return_date'];
$data = explode('-', $retorn);
echo date("d/m/Y", mktime(0, 0, 0, $date[1], $date[2] + 1, $date[0]));
?>
我只需要在上面的脚本上添加一条连续的语句,以防止c_return_date
显示任何内容,以防a_return_date
被注册。 看一下if / else子句:
<?php
if ($row['a_return_date'] != "0000-00-00"){
$return = (!empty($row['c_return_date'])) ? $row['c_return_date'] : $row['a_return_date'];
$data = explode('-', $return);
echo date("d/m/Y", mktime(0, 0, 0, $date[1], $date[2] + 1, $date[0]));
} else $row['a_return_date_br'] = "-";
?>
谢谢你们。 希望它对其他人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.