Autor Zpráva
sry
Profil *
Ahoj, mám v tabulce sloupec datetime, všehcny výběry v intervalech apod funkční. Ale takovou zakládní věc jako vybrat záznamy z určitého data/dne nebo konkretně měsíce mi nejde :-(

Díky za radu...

SELECT *
FROM tab
Where date=DATE(2008-07-27)

nefunguje např.
sry
Profil *
tak výběr podle konkrétního datumu mi jde...

SELECT *
FROM tab t 
where t.date='2008-07-27'


blbě jsem nazval sloupec a když se jmenu stejně jak funkce tak to blbne, každopádně konkrétní datum není až tak důležité.
Jjde z tohodle vybrat třeba podle roku a nebo jen měsíce ?

díky moc
nightfish
Profil
Jjde z tohodle vybrat třeba podle roku a nebo jen měsíce ?
select YEAR(`date`) FROM tab
select MONTH(`date`) FROM tab
sry
Profil *
super krok kupředu, díky moc.
Jen to neřeší přímo problém, respektivě z tohto mi to nefunguje.

např. chci záznamy pouze z července. Tzn, udělal bych to takto ne ?

select id,nazev, date,MONTH(`date`) as mesic FROM tab where mesic='7'


ale píše to že mesic neexistuje, tak jak to teda zapodminkuji? Díky
nightfish
Profil
imho
... from tab having mesic = '7'

nebo
... from tab where month(`date`) = '7'
sry
Profil *
Díky moc, omlouvám se ale vůbec nechápu proč to takto má být zapsáno :-(
A to s mysql dělám už nějaký pátek... člověk se stále učí.

Mohl bych vědět proč tam má být having když tam není group by?
A u klauzule where nejdou používat aliasy v podmínce ?

Díky za pomoc...
nightfish
Profil
A u klauzule where nejdou používat aliasy v podmínce?
u where nemůžeš použít aliasy v podmínce, protože aliasy se vyhodnotí až v okamžiku, kdy máš z tabulky vybrané řádky (tzn. v okamžiku, kdy se vyhodnocovalo where, tak ještě nebyl známý výsledek dotazu (což je logické), a nebyly tedy vyhodnoceny aliasy)
zatímco having aliasy obsahovat může, protože se vyhodnocuje až po získání výsledku
sry
Profil *
Díky za vysvětlení, myslel jsem si to...
sry
Profil *
Nalezl jsem jeden problém, vybrat z konkrétního datetime datum lze pokud čas je 00-00-00 viz muj druhý příspěvek.
A vybrat z datetime funkci date mi vrací null

DATE('date') as datum

Select count(v.id) as p,DAY(`date`) as den,DATE('date') as datum FROM tab v  GROUP BY den HAVING datum ='2008-07-27'


A ještě jeden malý dotaz, je možné pomocí funkce interval určit včerejší záznamy ? Dnešní třeba vyberu interval 1 day < date ale včera teda nějak nejde.
Napadá mě to vyřešit přes php a pak do sql dát konkrétní datum, ale chci se zeptat zda to nejd epřímov sql :-)

Díky
sry
Profil *
problem je v uvozovkách takže DATE(date) as datum

Můžeme mi někdo poradit kolem toho intervalu, k tomu se zatím nemohu dopátrat
nightfish
Profil
select DATE_SUB(CURDATE(), INTERVAL 1 DAY) -- ziska vcerejsi datum

EDIT: názvy sloupců se uzavírají do zpětných apostrofů - tzn. `date` místo 'date'
sry
Profil *
jj to už jsem taky zjistil, ale už jsem si pomohl sám, řešením je podmínka
DATE_SUB(CURDATE(), INTERVAL +1 DAY)=DATE(date)
Kajman_
Profil *
where `date`>=subdate(curdate(), interval 1 day) and `date`<curdate()

Když totiž budete porovnávat date(date) a ještě k tomu v having, tak to při velkých datech nebude rychlé. Ani index v tom případě nepomůže. Lepší je porovnávat přímo `date` na předpočítanou hodnotu.

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