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 
+0

你好,Rocket,谢谢你的输入。去试试这个! – Paul 2013-02-21 06:31:20

+0

不客气:) – 2013-02-21 14:16:39

+0

这一个正在做我所需要的!很多谢谢 – Paul 2013-02-21 15:26:20

你可以代替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