Autor | Zpráva | ||
---|---|---|---|
Nuimi Profil |
#1 · Zasláno: 5. 10. 2015, 19:11:44
Dobrý den, mám v databázi uloženou hodnotu datum (DATE) formát je 1997-10-5 a já bych potřeboval porovnávat záznam 10-5 s datunem daného dne, a proto se chci zeptet jak dostanu ven z toho 1997-10-5 jen to 10-5
|
||
Taps Profil |
#2 · Zasláno: 5. 10. 2015, 19:34:41
Nuimi:
Podivej se na month a day |
||
Nuimi Profil |
#3 · Zasláno: 5. 10. 2015, 19:41:18
nevím co tím myslíš
|
||
lionel messi Profil |
#4 · Zasláno: 5. 10. 2015, 20:21:46
|
||
Nuimi Profil |
Jo ale to month a day funguje jen na určitý čísla a já to potřebuju tahat z celého sloupce
Řekněme že mám dotaz $neco="SELECT neco FROM neco LIKE "???" Co mám napsat do like abych vybral z datumu jen tu část s měsícem a dnem??
|
||
anonymníí Profil * |
Nuimi:
Čeho chceš dosáhnout? Vypsat, kdo má daný den narozeniny? Nebo k čemu ti je jen den a měsíc? Soudě dle formátu data, který jsi sem dal (1997-10-5) soudím, že datum není typu date , že? Začni tím, že budeš data ukládat jako data a pak s nimi jako s daty pracovat.Napovím, že ať chceš udělat cokoliv, LIKE je téměř jistě špatně v tomto případě.
|
||
juriad Profil |
Nuimi:
Pokud chceš tuto operaci, tak se můžeš v MySQL s nějakou optimalizací dotazu rozloučit. Databáze vždy bude muset projít celou tabulku a porovnat každou hodnotu. Možné dotazy jsou tři: * máš den a měsíc zvlášť: SELECT * FROM tabulka WHERE MONTH(datum) = 10 AND DAY(datum) = 5; SELECT * FROM tabulka WHERE MONTH(datum) = 10 AND DAY(datum) = 5; SELECT * FROM tabulka WHERE CONCAT(MONTH(datum), '-', DAY(datum)) = '10-5'; SELECT * FROM tabulka WHERE CONCAT(MONTH(datum), '-', DAY(datum)) = '10-5'; SELECT * FROM tabulka WHERE DATE_FORMAT(datum, '%c-%e') = '10-5'; SELECT * FROM tabulka WHERE DATE_FORMAT(datum, '%c-%e') = '10-5'; Není příliš obvyklé, že v zápisu datumu nejsou jednotlivé položky zarovnané na dvě místa (10-5 oproti 10-05). To také může mít často důsledky na špatné pořadí záznamů a právě nemožnost použít operátor LIKE. Co bude jak rychlé si budeš muset otestovat sám. Pokud by ti šlo o rychlost, byl by dobrý nápad přidat nový sloupec s předpočteným datumem ve formátu určeným pro porovnání (tedy 10-5, nebo ještě lépe zarovnaném na 10-05, jak je zvykem). |
||
Nuimi Profil |
N řekněme že potřebuju porovnávat akruální den a měsíc se záznamem v databázi kde mám rok měsíc a den a já potřebuju porovnávat den se dnem a měsíc s měsícem
co kdybych místo datum chtěl záznamy z 1 sloupečku ( $datum=Date("m-d"); $datum=Date("m-d");
$dochazka="SELECT datum FROM registrace WHERE CONCAT(MONTH(datum), '-',DAY(datum)) = '".$datum."'"; přičemž datum by měl být jako název sloupce odkud tahám data |
||
tiso Profil |
#9 · Zasláno: 6. 10. 2015, 10:39:31
|
||
juriad Profil |
Nuimi:
date('m-d') ti nikdy nevrátí '10-5' , ale naopak '10-05' . Pak ale žádný z mých navrhů dotazů fungovat nebude. Nejblíže je však ten poslední, u kterého stačí formát změnit na '%m-%d' .
„přičemž datum by měl být jako název sloupce odkud tahám data“ Buď to nechápu, nebo je to neskutečná blbost. tiso: To právě nebude fungovat kvůli té nule. Ale možná tam tu nulu sktečně má. Bůh ví. |
||
tiso Profil |
#11 · Zasláno: 6. 10. 2015, 11:04:36
|
||
Nuimi Profil |
#12 · Zasláno: 6. 10. 2015, 11:21:41
NO popravde to od tiso funguje dokonale, porovnávám díky tomu data ve sloupci a funguje to
|
||
Časová prodleva: 9 let
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0