Taulussa on muuttuja date_arvo. Siellä on rivi esim. "2009-01-10 19:19:53"
Mitä teen väärin?
SELECT * FROM taulu WHERE date_arvo like '%2009-01-10 %';
SQL:n perusteet DATE:n suhteen hukassa
3
852
Vastaukset
- bZZgWQv3ai
Like on tarkoitettu merkkijonoille. Ilmeisesti date_arvo on mallia TIMESTAMP. Siihen puree normaalit matemaattiset vertailuoperaattorit.
- bZZgWQv3ai
SELECT * FROM taulu WHERE CAST(date_arvo AS DATE)='2009-01-10'
Jotain tuollaista. Kovasti taidot ovat ruosteessa. Pitäisi oikeastaan katsoa manuaalista. Kokeilepa ilman prosenttimerkkejä ja ylimääräisiä välejä. Toiminee ainakin oraclessa, ellen ihan väärin muista.
Ehkä järkevämpää olisi hakea rivit, joilla date_arvo >= 2009-01-10 ja < 2009-01-11. Jälkimmäiseen tietysti joku tietokannan tarjoama funktio, jolla lisätään yksi päivä (esim. oraclessa taitaa mennä ihan date_arvo 1).
LIKE sinänsä on stringivertailu. Voit toki castata tuon stringiksi ja sitten toimii, mutta jos tuo on indeksoitu, voi suorituskyky ihan pikkasen romahtaa (pitäisi varmaan olla, jos rivejä on yhtään enemmän ja tuo on ainut hakukriteeri).
Yleisenä periaatteena: käytä like- hakua vain jos se on oikeasti välttämätön. , = ja = ovat parempia, vaikka niitä joutuisi käyttämään enemmänkin.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 741114
- 751111
- 481004
Miltä se tuntuu
Miltä se tuntuu havahtua, että on ollut ihmistä kohtaan, joka on rakastanut ja varjellut, täysi m*lkku? Vai havahtuuko s104958- 51935
- 33717
- 49704
Mitä se olisi
Jos sinä mies saisit sanoa kaivatullesi mitä vain juuri nyt. Ilman mitään seuraamuksia yms. Niin mitä sanoisit?34607- 50590
Nanna Karalahti :Paljastus bisneksistä Jere Karalahden kanssa!
Ottanut yhteyttä seiskalehden toimittajaan ja kertonut totuuden yhteisestä Herotreeni-nimisestä verkkovalmenuksesta.118557