MySQL如何在查询中将00-00-000转换为CURDATE

时间:2013-02-20 21:32:00

标签: mysql

我想要的是这个。

有时我的数据库中的日期字段填充了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
        )

我该怎么做?我希望我的问题很清楚。我可以找到很多关于将数据输入表格的信息,但几乎没有关于上述情况的信息。

提前致谢!

2 个答案:

答案 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