Autor | Zpráva | ||
---|---|---|---|
meiilax Profil |
#1 · Zasláno: 4. 4. 2011, 18:06:18
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 |
#2 · Zasláno: 4. 4. 2011, 18:32:32 · Upravil/a: Tori
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 |
#3 · Zasláno: 4. 4. 2011, 19:26:55 · Upravil/a: meiilax
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 * |
#4 · Zasláno: 4. 4. 2011, 21:45:15
SELECT * FROM `new_download` WHERE '2011-04-04' between `effect_from` AND `effect_to` |
||
meiilax Profil |
#5 · Zasláno: 4. 4. 2011, 21:52:58
Kajman:
Díky, to vypadá nejelegantněji a funguje to :-) |
||
Časová prodleva: 13 let
|
0