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
833
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
Tukalaa kuumuutta
Tietäisitpä vaan kuinka kuumana olen käynyt viime päivät. Eikä johdu helteestä, vaan sinusta. Mitäköhän taikoja olet teh422732Mansikkatiloilla hyväksikäytetään ukrainalaisia
Työolot ovat surkeita ja palkka kelvoton. https://yle.fi/a/74-201729423422470- 352154
Ensi kesänä
Näin kesän viimeisenä minuutteina ajattelen sinua. Olisiko seuraava kesä "meidän" kesä? Tänä vuonna ei onnistuttu, mutta471896- 241685
Okei, myönnetään,
Oisit sä saanut ottaa ne housutkin pois, mutta ehkä joskus jossain toisaalla. 😘251589- 441460
- 1001419
En ymmärrä käytöstäsi
Se on ollut eräänlaista hyväksikäyttöä. Että seura kyllä kelpaa palstan välityksellä silloin kun ei ole parempaakaan tek1391375- 361176