我想要的是这个。
有时我的数据库中的日期字段填充了0000-00-00,这非常好。将数据放入表格中没有问题。所以我不是在寻找解决方案,而是将我的tabel从0000-00-00改为NULL。
我想将/ convert 0000-00-00替换为CURDATE或NOW,但我还没有找到任何解决方案。
我目前使用的查询如下所示:
$sql = "(SELECT
date_format (dat_start, '%d-%m-%Y') AS dat_start,
date_format (dat_eind, '%d-%m-%Y') AS dat_eind,
o.nm,
o.acroniem,
o.orgid,
r.naam,
r.rolid,
(SELECT COUNT(*)
FROM
relatie re2
WHERE
re2.organ_orgid = relatie.organ_orgid
AND
re2.rolid_rol = relatie.rolid_rol
AND re2.dat_start
BETWEEN dat_start AND dat_eind
AND re2.dat_eind
BETWEEN dat_start AND dat_eind
) AS aantal
FROM
relatie
LEFT JOIN
organ o
ON
o.orgid = relatie.organ_orgid
LEFT JOIN
rollen r
ON
r.rolid = relatie.rolid_rol
WHERE
relatie.pers_persid = '$persid2'
ORDER BY dat_start DESC
)
我该怎么做?我希望我的问题很清楚。我可以找到很多关于将数据输入表格的信息,但几乎没有关于上述情况的信息。
提前致谢!
答案 0 :(得分:2)
您可以使用这样的表达式代替date_column
(您应该用列名替换):
CASE
WHEN date_column = '0000-00-00' THEN CURDATE
ELSE date_column
END
例如,在查询中:
SELECT
field_a,
field_b,
CASE
WHEN date_column = '0000-00-00' THEN CURDATE
ELSE date_column
END AS adjusted_date_column
FROM a_table
WHERE ...;
答案 1 :(得分:2)
您可以使用IF
检查字段是否为'0000-00-00'
。
DATE_FORMAT(IF(dat_start = '0000-00-00', NOW(), dat_start), '%d-%m-%Y') AS dat_start