Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako odštampati intervale datuma...nedoumica!

[es] :: MySQL :: Kako odštampati intervale datuma...nedoumica!

[ Pregleda: 3929 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mika
NBG-ML

Član broj: 55
Poruke: 640
*.adsl-2.sezampro.yu.



+1 Profil

icon Kako odštampati intervale datuma...nedoumica!19.06.2007. u 14:30 - pre 204 meseci
Ehm, pozdrav svima, imam jedan problemčić koji bih sa vama da podelim.

Potrebno je da (koristeći bazu podataka) izlistam datume (u određenom formatu: "dan.mesec.") počev od današnjeg dana pa X dana unazad.

Npr. SQL upit za sedam dana glasi:

Code:

select date_format(now(), "%e.%c.") union
select date_format(now()-interval 1 day, "%e.%c.") union
select date_format(now()-interval 2 day, "%e.%c.") union
select date_format(now()-interval 3 day, "%e.%c.") union
select date_format(now()-interval 4 day, "%e.%c.") union
select date_format(now()-interval 5 day, "%e.%c.") union
select date_format(now()-interval 6 day, "%e.%c.") 



E sad, postavlja se pitanje: kako generalizovati gornji kod, da mogu izlistati i 100 dana i 5 dana i bilo koliko? Da li je potrebno praviti stored funkciju/proceduru (nemam prevelikog iskustva s njima) ili je dovoljno napraviti neki malo komplikovaniji query, sa uslovom: ".... WHERE date between NOW() and NOW()-INTERVAL 7 days ... ".

Svaka pomoć, smernica, je dobrodošla! 10x unapred!
Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

357_97

Član broj: 53056
Poruke: 104
*.eunet.yu.



+5 Profil

icon Re: Kako odštampati intervale datuma...nedoumica!21.06.2007. u 20:26 - pre 204 meseci
Da nebi komplikovali mnogo probaj mozda da ovo stavis u jednu petlju pa da sve to onda upakujes u neku funkciju ako cesto pozivas isti kod:
Code:
function izlaz($dani) {
    $upit = 'select date_format(now(), "%e.%c.") union ';
    for($i=1; $i<=$dani; $i++) {
        $upit.= 'select date_format(now()-interval' + $i + ' day, "%e.%c.")';
        if ($i!=$dani) $upit.= 'union';
    }
    return $upit;
}

ili ako nije potrebno resenje preko mysql-a probaj sa
Code:
for ($i=1; $i<=5; $i++) {
    echo date('j.n.',time()-24*60*60*$i);
}
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at.

Sajt: www.baze-podataka.net


+2 Profil

icon Re: Kako odštampati intervale datuma...nedoumica!22.06.2007. u 23:16 - pre 204 meseci
1. Kreiras "pomocnu" tabelu sa brojevima:
Code:
CREATE TABLE dummy_numbers(
  num mediumint(8) not null auto_increment primary key);

i popunis ju brojevima do neke maksimalne vrijednosti, do koje ocekujes da ces imati datume...
Code:
mysql> select max(num) from dummy_numbers;
+----------+
| max(num) |
+----------+
|      100 |
+----------+
1 row in set (0.00 sec)


Za punjenje te tabele mozes koristiti ili proceduru ili neki prog. jezik ili LOAD i sl.

2. Npr. zelis ispisati datume za 15 dana:
Code:

set @koliko := 15;
select date_format(sub1.datum, "%e.%c.") as datum
from (select now() - interval dm.num day as datum
        from dummy_numbers dm
       where dm.num <= @koliko
      order by datum
     ) as sub1;


Nema na cemu.
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

[es] :: MySQL :: Kako odštampati intervale datuma...nedoumica!

[ Pregleda: 3929 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.