我有一个名为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。
答案 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_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'] = "-";
?>
谢谢大家。希望对其他人有帮助。