Hei,
minulla on yhdessä Mysql kentässä arvona time() funktiolla tuotettu aikaleima.
Miten voisin hakea MySQL taulusta esimerkiksi kaikki 12. elokuuta 2011 olevat rivit?
t.Olli
Muuta kokonaislukuarvot datetime-tyyppisiksi funktiolla FROM_UNIXTIME(). Sitten voit vertailla näitä arvoja suoraan merkkijonona annettuun päivämäärään.
SELECT * FROM mytable WHERE FROM_UNIXTIME(timefield) = '2011-08-12'
Kiitos tästä !
Jouduin tosin muuttamaan hieman:
SELECT * FROM varaukset WHERE FROM_UNIXTIME(aika) LIKE '%".$V."-".$K."-".$P."%'
Teet jotain väärin, jos tuota pitää muuttaa. Kyseinen muoto on standardi ja se toimii suoraan ainakin MySQL:ssä, luultavasti monissa muissakin tietokantasoftissa. Päivämäärän ei edes tarvitse olla täsmälleen 'yyyy-mm-dd' vaan myös 'yy-m-dd' näytti kelpaavan.
Eiköhän vika ole siinä, että FROM_UNIXTIME palauttaa koko aikaleiman eli päivämäärän ja kellonajan. Oikea tarkistus olisi siis tämä:
DATE(FROM_UNIXTIME(timefield)) = '2011-08-12'
Tuon kammottavan muuttujasotkunkin voi kirjoittaa paljon helpommin:
$sql = "SELECT * FROM varaukset WHERE DATE(FROM_UNIXTIME(aika)) = '{$V}-{$K}-{$P}'";
Mutta kyllä se toimii ihan yhtä hyvin tuolla minunkin versiolla. Ainakin kun kokeilin, niin kyllä se täysin toimi.
Olli kirjoitti:
Mutta kyllä se toimii ihan yhtä hyvin tuolla minunkin versiolla. Ainakin kun kokeilin, niin kyllä se täysin toimi.
Eihän muuta ole väitettykään. Metabolix vain ehdotti selkeämpää tapaa kirjoittaa koodinpätkäsi.
ahaa no eipä sitten mitäään . Kiitoksia
Vika = syy sille, että ensimmäinen annettu neuvo ei sellaisenaan toiminut.
Aihe on jo aika vanha, joten et voi enää vastata siihen.