Autor | Zpráva | ||
---|---|---|---|
sry Profil * |
#1 · Zasláno: 29. 7. 2008, 17:06:46
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 * |
#2 · Zasláno: 29. 7. 2008, 17:43:14
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 |
#3 · Zasláno: 29. 7. 2008, 17:56:17
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 * |
#4 · Zasláno: 29. 7. 2008, 18:08:08
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 |
#5 · Zasláno: 29. 7. 2008, 18:14:07
imho
... from tab having mesic = '7' nebo ... from tab where month(`date`) = '7' |
||
sry Profil * |
#6 · Zasláno: 29. 7. 2008, 18:18:36
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 |
#7 · Zasláno: 29. 7. 2008, 18:21:02
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 * |
#8 · Zasláno: 29. 7. 2008, 18:23:02
Díky za vysvětlení, myslel jsem si to...
|
||
Časová prodleva: 3 dny
|
|||
sry Profil * |
#9 · Zasláno: 1. 8. 2008, 13:27:20
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 * |
#10 · Zasláno: 1. 8. 2008, 14:13:30
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 |
#11 · Zasláno: 1. 8. 2008, 14:26:35 · Upravil/a: nightfish
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 * |
#12 · Zasláno: 1. 8. 2008, 14:28:52
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. |
||
Časová prodleva: 16 let
|
0