MySQL如何在查询中将00-00-000转换为CURDATE
问题描述:
我想要的是这样的。MySQL如何在查询中将00-00-000转换为CURDATE
有时在我的数据库中的日期字段填写了非常好的0000-00-00。将我的数据放入我的表格中我没有任何问题。所以我不在寻找解决方案,将我的tabel从0000-00-00改为NULL。
我想要替换/转换为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
)
我怎样才能做到这一点?我希望我的问题很清楚。我可以找到很多有关将数据导入表格的信息,但几乎没有任何关于上述情况的信息。
在此先感谢!
答
你可以使用IF
来检查该字段是否为'0000-00-00'
。
DATE_FORMAT(IF(dat_start = '0000-00-00', NOW(), dat_start), '%d-%m-%Y') AS dat_start
答
你可以代替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 ...;
+0
你好,Cdhowie,谢谢你的回复。今晚要测试这个。 – Paul 2013-02-21 06:32:42
你好,Rocket,谢谢你的输入。去试试这个! – Paul 2013-02-21 06:31:20
不客气:) – 2013-02-21 14:16:39
这一个正在做我所需要的!很多谢谢 – Paul 2013-02-21 15:26:20