1

我想要的是这个。

有时,我的数据库中的日期字段充满了 0000-00-00,这非常好。我将数据放入表中没有问题。所以我不是在寻找将我的表从 0000-00-00 更改为 NULL 的解决方案。

我想将 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
        )

我怎样才能做到这一点?我希望我的问题足够清楚。我可以找到很多关于将数据放入表中的信息,但几乎没有关于上述情况的信息。

提前致谢!

4

2 回答 2

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 ...;
于 2013-02-20T21:36:08.033 回答
2

您可以使用IF来检查该字段是否'0000-00-00'存在。

DATE_FORMAT(IF(dat_start = '0000-00-00', NOW(), dat_start), '%d-%m-%Y') AS dat_start
于 2013-02-20T21:37:05.870 回答