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
827
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
Oletko kertonut jo muille tunteistasi?
Ystävillesi esimerkiksi? Minä en ole vielä kertonut kenellekään tästä meidän jutusta.774622- 1801897
- 1241590
- 1241125
Miten minusta tuntuu että kaikki tietää sun tunteista mua kohtaan
Paitsi suoraan minä itse, vai mitä hlvettiä täällä tapahtuu ja miksi ihmiset susta kyselee minulta 🤔❤️161061- 351036
- 78933
- 52896
Hyvää huomenta!
Mietin miten suhtaudut minuun, jos kerron tunteista. Voinko enää sen jälkeen olla samassa paikassa kanssasi, jos koet as78872- 4828