Autor Zpráva
meiilax
Profil
Ahojte,

mám skromný dotázek, v DB (MySQL) mám pole "effect_from" a "effect_to", typ date a mám 2 záznamy:

záznam 1
hodnota "effect_from" je 2011-04-01
hodnota "effect_to" je 2011-04-30

záznam 2
hodnota "effect_from" je 1970-01-01
hodnota "effect_to" je 2099-12-31

Dotaz

SELECT * FROM `new_download` WHERE
UNIX_TIMESTAMP(effect_from) <= UNIX_TIMESTAMP(STR_TO_DATE('04.04.2011','%d.%m.%Y')) AND UNIX_TIMESTAMP(effect_to) >= UNIX_TIMESTAMP(STR_TO_DATE('04.04.2011','%d.%m.%Y'))

však najde pouze záznam 1. Nevíte čím to je, když by teoreticky měly dotazu odpovídat oba dva ?

Díky moc. Milan
Tori
Profil
meiilax:
Rok 2099 je mimo rozsah unixového času (1970 - 2037). Teď máte sloupce effect* asi v DATETIME, že? Pokud potřebujete používat data mimo rozsah 1970-2037, tak jen vyhodíte funkci UNIX_TIMESTAMP z dotazu:
SELECT * FROM `new_download` WHERE 
`effect_from` <= STR_TO_DATE('04.04.2011', GET_FORMAT(DATE,'ISO')) AND `effect_to` >= STR_TO_DATE('04.04.2011', GET_FORMAT(DATE,'ISO'))
meiilax
Profil
Tori:
Díky moc, to jsem nevěděl..
Ale každopádně výše uvedená oprava dotazu nefunguje, nenalzene to žádný záznam.
Kajman_
Profil *
SELECT * FROM `new_download` WHERE '2011-04-04' between `effect_from` AND `effect_to`
meiilax
Profil
Kajman:
Díky, to vypadá nejelegantněji a funguje to :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0