SELECT, který zobrazí záznamy od dneška do budoucna – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

SELECT, který zobrazí záznamy od dneška do budoucna – MySQL – Fórum – Programujte.comSELECT, který zobrazí záznamy od dneška do budoucna – MySQL – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
lama
~ Anonymní uživatel
33 příspěvků
1. 2. 2008   #1
-
0
-

Potreboval bych vytvorit SELECT, který mi vybere z databáze všechny záznamy podle sloupce "DO". Bude vybírat záznamy dnešní (včetně dnešního) až do nekonečna - budoucna, které budou samozrejme v databázi a seřadí je podle ID.
Našel jsem nějaky ale nefunguje tak jak by mel...



$query = 'select DATE_FORMAT(od,"%e.%c.%Y") as od, DATE_FORMAT(do,"%e.%c.%Y") as do,
jmeno, textarea, id, UNIX_TIMESTAMP(od) AS datum_od, UNIX_TIMESTAMP(do) AS datum_do from kruzek_info where od > (now()-INTERVAL 1 day) order by id DESC';

Nahlásit jako SPAM
IP: 213.211.55.–
Reklama
Reklama
klinki0
Návštěvník
2. 2. 2008   #2
-
0
-

Ja bych zkusil

"SELECT * FROM tabulka WHERE od >= TIMESTAMP(CURRENT_DATE()) ORDER BY id DESC"

pokud by to delalo problemy tak
"SELECT * FROM tabulka WHERE UNIX_TIMESTAMP(od) >= UNIX_TIMESTAMP(CURRENT_DATE()) ORDER BY ID desc"

Nahlásit jako SPAM
IP: 85.13.98.–
lama
~ Anonymní uživatel
33 příspěvků
3. 2. 2008   #3
-
0
-

stale to zobrazuje vsechny data bez nejakeho omezeni
nemusí se třeba v selectu nějak spešl zadat formát data?
v databázi u sloupců OD i DO mám záznamy v takovém formátu: 2008-02-03 11:52:00

Nahlásit jako SPAM
IP: 213.211.55.–
stepan0
Newbie
3. 2. 2008   #4
-
0
-

Nemůže být chyba v přesnosti času? Pokud použiji funkci, která mi vrátí aktuální datum, pak se mi nezobrazí záznamy, které byly vloženy v aktuální den do současného data (kvůli podmínce >=). Možná by bylo vhodnější použít nějakou funkci jako trunc/floor, kterou zaobalím funkci pro vrácení data - tím mám zajištěno, že se mi zobrazí i záznamy za aktuální den.

Nahlásit jako SPAM
IP: 85.71.61.–
klinki0
Návštěvník
4. 2. 2008   #5
-
0
-

To stepan : Ten muj dotaz by mel zobrazit i dnesni zaznamy protoze TIMESTAMP(CURRENT_DATE()) je vlastne dnesni den od 00:00 a v dotazu je cca napsano
Zobraz vse z tabulky kde od je vetsi nebo rovno dnesnimu dni :)
Takze nevim kde je problem...

Jo jeste me napadlo jakej datovej typ je od do ? Je to timestamp nebo datetime ? tim to moznaa bude

Nahlásit jako SPAM
IP: 85.13.98.–
lama
~ Anonymní uživatel
33 příspěvků
4. 2. 2008   #6
-
0
-

To klinki :
Datovy typ u obou sloupců je TIMESTAMP

Nahlásit jako SPAM
IP: 213.211.55.–
klinki0
Návštěvník
5. 2. 2008   #7
-
0
-

Tak je chyba nekde u tebe ted jsem vlastnorucne zkousel ten dotaz a funguje ;)
Narval sem do databaze cca nahodna data (az na datumy ty sem si nadefinoval) takze sem tam mel vsechny dny roku 2005 - 2008 a kdyz sem spustil ten dotaz tak se skutecne vybraly jen dny ktery sou ode dneska vejs...

Kdybys chtel vyzkouset tak tabulka



CREATE TABLE IF NOT EXISTS `test`
(
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_czech_ci NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=0 ;


PHP cast: (lze samozrejme udelat na stejnem principu v kteremkoliv jazyce ;)


/* jednoduchy cyklus ktery vlozi do db dny od roku 2005 do roku 2008
* Vklada vsechny mesice
* a dny v rozmezi 1 - 28 (kvuly kratkymu unoru, nechtelo se mi to upravovat ;) )
*/
for ($x = 2005; $x <= 2008; $x++)
for ($y = 1; $y <= 12; $y++)
for ($z = 1; $z <= 28; $z++)
{
// Pozadovany format: 2008-02-05 17:45:00 (pro date 'Y-n-j G:i:s' ) ;
$hodnota = $x."-".$y."-".$z." 17:45:00";
$dotaz = mysql_query("INSERT INTO test(`name`,`date`) VALUES ('".$x.$y.$z."', '".$hodnota."');");
if (!$dotaz)
{
echo "INSERT INTO test(`name`,`date`) VALUES ('".$x.$y.$z."', '".$hodnota."');";
}
}


Vystup:


$dotaz = mysql_query("SELECT * FROM test WHERE date >= TIMESTAMP(CURRENT_DATE()) ORDER BY id DESC");

echo 'ID         Datum';
while ($data = mysql_fetch_assoc($dotaz))
{
echo $data['id'].'     '.$data['date'].'';
}


Vysledny rozsah ID je od 1041 do 1344 v tom selectu.
Co se tyce datumu tak od ID: 1041 Datum: 2008-02-05 17:45:00 (proste od toho dne (vcetne) kdy to spustis ) vpodstate do posledniho zaznamu
(u me ID: 1344 Datum: 2008-12-28 17:45:00)

SNad to nak poberes :D

Nahlásit jako SPAM
IP: 85.13.98.–
lama
~ Anonymní uživatel
33 příspěvků
6. 2. 2008   #8
-
0
-

tak lidičky, já to rozjel!
díky moc!!!!
chyba byla asi v tom, že sem tam stále rval nějaké zbytečnosti. A MySQL je o jednoduchosti a srozumitelnosti:)
Diky moc

Nahlásit jako SPAM
IP: 213.211.55.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý