Minulla on mysql datetime-kenttä mitä käytetään ainoastaan osassa tietueista. Haluaisin järjestää kentän nousevaan järjestykseen niin että null-rivit olisivat viimeisenä. Pitääkö tehdä php:n puolella joku jippo millä järjestyksen saa muutettua tuollaiseksi?
MySQL taitaa laittaa kaikki NULL datetime kentät nollaksi, tai se varmaan riippuu siitä miten default ja Not Null on asetettu.
Eli jompi kumpi pitäisi varmaan toimia.
SELECT * FROM taulu ORDER BY aika IS NULL, aika ASC;
SELECT * FROM taulu ORDER BY aika = 0, aika ASC;
Kiitos, ensimmäinen versio lähti toimimaan kunhan osasi laittaa tuon ehdon oikein Zend_Db_Selectille.
makumaku kirjoitti:
MySQL taitaa laittaa kaikki NULL datetime kentät nollaksi,
DATETIME ei voi olla 0, ja jos NOT NULL -kenttään yrittää tallentaa NULL-arvon, pitäisi tulla virheilmoitus. Muutenkin 0-rivien esiintyminen kuulostaisi minusta suunnitteluvirheeltä, kun NULL on tyhjää arvoa varten.
Juu, tuli taas kirjoitettua hieman mitä sattuu. Tarkoitin lähinnä että jos datetime kenttä on NOT NULL, niin kenttää voinee verrata pelkällä 0:lla ( ...WHERE aika = 0 ) , sen sijaan että vertailisi esim, aika = '0000-00-00 00:00:00' tapauksissa joissa aikaa ei ole talletettu.
Sinänsä ei kyllä voi kovin paljon arvostaa tietokantamoottoria joka ylipäätään antaa laittaa date-kenttään 0000-00-00
Aihe on jo aika vanha, joten et voi enää vastata siihen.