sql >> Database >  >> RDS >> Mysql

Hoe de 0000-00-00-datum in jdbc MySQL-query te verwerken

Ik hou van @a_horse_with_no_name 's antwoord, maar als u geen controle heeft over de verbinding, kunt u de zoekopdracht wijzigen om een ​​null te retourneren in plaats daarvan:

select
    ...
    case when my_date_col = '0000-00-00' then null else my_date_col end as my_date_col,
    ...

of de iets beknoptere, maar alleen mysql-optie:

    if(my_date_col = '0000-00-00', null, my_date_col) as my_date_col


Ook is voorzichtigheid geboden bij het wijzigen van het JDBC-gedrag van de hele applicatie, aangezien u code kunt breken die afhankelijk is van het retourneren van dergelijke datums - misschien gebruiken ze rs.getString(i) in plaats van. U zou alle andere zoekopdrachten moeten regressietesten om er zeker van te zijn.



  1. Datums ouder dan tijdstempel opslaan in PHP

  2. Fatale fout:Maximale uitvoeringstijd van 30 seconden overschreden in C:

  3. Hoe de MySQL-opdracht uit te voeren van de host naar de container met de MySQL-server?

  4. Hoe krijg ik kolomnamen in Laravel 4?