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 に答える