PHP上的空域处理

时间:2019-01-18 10:56:21

标签: php php-mysqlidb

我有一个名为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初学者,我为此感到困惑:每当我们有一个(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。

3 个答案:

答案 0 :(得分:0)

我不认为这是一个随机约会。这只是MySQL中0000-00-00表示的日期。

我将使用NULL:

create table hr_events (return_date date default null);

这样,您可以查询以下内容:

select * from hr_events where return_date is null;

要获取尚未设置hr_events的所有return_date行。

答案 1 :(得分:0)

我建议允许您的日期字段为空:

CREATE TABLE yourTable (return_date DATE, ...)

然后,允许null在语义上表示该员工尚未休产假。您可以使用COALESCE用某个默认日期替换该null值:

SELECT COALESCE(return_date, '1999-12-01') AS return_date
FROM yourTable;

答案 2 :(得分:0)

毕竟,这是一个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_datea_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'] = "-";
                             ?>

谢谢大家。希望对其他人有帮助。