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

SQL upit za broj dana ne racunajuci nedjelje

[es] :: Baze podataka :: SQL upit za broj dana ne racunajuci nedjelje

Strane: 1 2

[ Pregleda: 8220 | Odgovora: 24 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon SQL upit za broj dana ne racunajuci nedjelje25.04.2006. u 20:43 - pre 219 meseci
moze li mi pomoci oko ovog SQL upita:

imam jedan datum upisan u bazu kada sam nesto nekome pozajmio i datum kada mi je to taj neko vratio.
meni treba upit koji ce mi izbaciti broj dana koliko je to bilo kod toga nekoga, ali NE RACUNAJUCI NEDJELJE!!

primjer: ako je neko nesto uzeo u subotu,15.03.2005 a vratio to u ponedjeljak,17.03.2005. onda je to bilo kod njega 1 dan,tj. kao da je vratio sutradan...!znaci ne racunamo nedjelje....

moze li ko pomoci oko ovoga??
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje26.04.2006. u 08:20 - pre 219 meseci
Nađeš razliku u danima. Podeliš celobrojno sa 7. Na količnik dodaš jedan ako je u prethodnih m dana (a m je ostatak pri deljenju) bila nedelja i taj broj oduzmeš od razlike iz prve rečenice.
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje26.04.2006. u 09:33 - pre 219 meseci
Citat:
Na količnik dodaš jedan ako je u prethodnih m dana (a m je ostatak pri deljenju) bila nedelja


a kako cu znati da li je bila nedjelja....
znaci ja ipak trebam racunati da li je bila ili nije...??
sta ako je "m" 2000?? onda da racunam koliko ima nedjelja u ih 2000 dana...??



hvala ti na pomoci, ali mi treba konkretan upit koji ce sam sve to izracunati...
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje26.04.2006. u 09:37 - pre 219 meseci
Citat:
DART_VEJDER: sta ako je "m" 2000?? onda da racunam koliko ima nedjelja u ih 2000 dana...??

Ne znam gde si učio matematiku, ali ostatak pri deljenju sa 7 teško može da bude 2000.

Inače, u MSSQLu redni broj dana u nedelji za zadati datum d dobijaš pomoću DATEPART(dw, d).

[Ovu poruku je menjao jablan dana 26.04.2006. u 10:41 GMT+1]
 
Odgovor na temu

Ana Komazec
Beograd

Član broj: 76433
Poruke: 22
*.adsl.sezampro.yu.

ICQ: 274954884


Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje26.04.2006. u 13:51 - pre 219 meseci
Ne znam koja je baza u pitanju, ali mozda ovaj upit pomogne:

Code:
Select Veci_dat-Manji_dat + Datediff("ww", Veci_dat,Manji_dat) 
         From Tabela 


Ovo radi u Access-u

Pozdrav
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje26.04.2006. u 21:51 - pre 219 meseci
Citat:
Ne znam gde si učio matematiku, ali ostatak pri deljenju sa 7 teško može da bude 2000.


haha... :-)

lapsus, nisam najbolje procitao sta si rekao....

u pravu si, trebao bih razmisliti o onom tvom predlogu, ali zasto sam trazio upit:

da bih mogao povezati jos jednu tabelu u upit i kao uslov staviti da se takodje ne racuna onaj datum iz ovog intervala koji se poklapa sa bilo kojim iz ove dodate tabele....

uglavnom, upit bi mi malo vise pomogao, ali i ovo je dobro, pogledacu da to nekako povezem...

hvala....

@AnaKomazec:

pogledacu i ovo sto si ti napisala....

mozes li samo objasniti sta znaci ovo "Datediff("ww", Veci_dat,Manji_dat)" ??
ovu f-ju prvi put vidim...

da, access je u pitanju...

hvala i tebi na odgovoru...
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

Ana Komazec
Beograd

Član broj: 76433
Poruke: 22
*.adsl.sezampro.yu.

ICQ: 274954884


Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje27.04.2006. u 14:27 - pre 219 meseci
Ta funkcija broji koliko ima Nedelja (Sundays) izmedju 2 datuma. U ovom slucaju dobija se negativan broj, zato i stoji "+" ispred. Minus bi stajao kada bi oblik bio Datediff("ww", Manji_dat,Veci_dat).

Napomena: Manji_dat i Veci_dat su imena atributa, u smislu Uzeo i Vratio tipa Date, ne konkretni datumi

Pozdrav

[Ovu poruku je menjao Ana Komazec dana 27.04.2006. u 15:31 GMT+1]
 
Odgovor na temu

branimir.ts
Beograd

Član broj: 56661
Poruke: 127
*.sezampro.yu.

Sajt: www.geocities.com/brankob..


Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje04.05.2006. u 16:06 - pre 218 meseci
Za MSSQL

Code:

DECLARE @dateFrom datetime
DECLARE @dateTo datetime 
DECLARE @DaysBetween int

SET @DaysBetween = 0 
SET @dateFrom = '20060429'
SET @dateTo = '20060508'

WHILE @dateTo - 1  >= @dateFrom 
    BEGIN
        SET @dateFrom = @dateFrom + 1 
        IF DATEPART(dw,@dateFrom) <> 1 --Nedelja 
            SET @DaysBetween = @DaysBetween + 1
    
    END

SELECT   @DaysBetween  as BrojDana


Rezultat:
Code:

----------
BrojDana
----------
7
----------


Ovo mozes da dalje "trpas" u stor proc , funkciju ili kako vec....

Pozdrav
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.tippnet.co.yu.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje09.05.2006. u 00:14 - pre 218 meseci
Evo ti resenje u standardnom SQL-u bez upotrebe M$SQL specificnih funkcija, stored procedure, ...

Prvo napravis tabelu kalendar.

Code:

CREATE TABLE kalendar (
  kalendarski_dan DATE NOT NULL PRIMARY KEY(kalendarski_dan),
  kratko_ime_dana CHAR(2) NOT NULL CHECK (ime_dana IN ('PO', 'UT', 'SR', 'CE', PE', 'SU', 'NE'))
);


Dane sam kodirao sa 'PO', 'UT, ... , 'NE' a ne sa brojevima 0, 1, ... , 6, tako da nemoram da razmisljam da li je 0 (nula) oznaka za Nedelju ili Ponedeljak.

Ova tabela uz dodatne kolone moze biti vrlo korisna za razne upite.

Popunis ovu tabelu.

Code:

INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-01', 'UT');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-02', 'SR');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-03', 'CE');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-04', 'PE');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-05', 'SU');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-06', 'NE');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-07', 'PO');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-08', 'UT');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-09', 'SR');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-10', 'CE');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-11', 'PE');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-12', 'SU');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-13', 'NE');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-14', 'PO');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-15', 'UT');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-16', 'SR');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-17', 'CE');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-18', 'PE');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-19', 'SU');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-20', 'NE');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-21', 'PO');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-22', 'UT');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-23', 'SR');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-24', 'CE');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-25', 'PE');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-26', 'SU');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-27', 'NE');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-28', 'PO');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-29', 'UT');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-30', 'SR');
INSERT INTO kalendar (kalendarski_dan, kratko_ime_dana) VALUES ('2005-03-31', 'CE');


Ja sam je popunio samo sa danima iz Marta 2005. Inace se popunjava sa dovoljnim vremenskim intervalom (nekoliko godina, veoma se lako dopunjuje ako postoji potreba za vecim intervalom). Usput, u mom kalendaru je 15.3.2005. Utorak. I da se vodis po Gregorijanskom kalendaru opet ne bi bila Subota :)
Za popunjavanje tabele kalendar sam upotrebio Excel u kojem se vrlo lako prave ovakve kalendarske tabele, a onda sam iz Excela importovao u bazu.

Tvoj upit je dalje veoma lak. Prebrojis dane u kalendaru izmedju dva datuma koji nisu Nedelje. Obrati paznju kako upit prirodno prati tok recenice na srpskom (Nisu potrebne carobne M$SQL funkcije sa parametrom 'ww'. Sta dovraga znaci 'ww' u srpskom ili engleskom?).

Code:

SELECT COUNT(*) - 1
  FROM kalendar
 WHERE kalendarski_dan BETWEEN '2005-03-15' AND '2005-03-17'
   AND NOT kratko_ime_dana = 'NE'


Napomena: Ovaj upit moze da vrati rezultat -1 u slucaju da su pocetni i krajnji dan isti i da je taj dan Nedelja. Ovo mozes da izbegnes upotrebom CASE izraza, odnosno sledecim upitom (opet standardni SQL):

Code:

SELECT CASE WHEN COUNT(*) = 0
            THEN 0
            ELSE COUNT(*) - 1
       END
  FROM kalendar
 WHERE kalendarski_dan BETWEEN '2005-03-15' AND '2005-03-17'
   AND NOT kratko_ime_dana = 'NE'



Resenje je provereno na PostgreSQL 8.1.


POZDRAV


PS:- CASE izraz sigurno ne prolazi u InterBase 6.x, 7.1 a prolazi na Firebird 1.5 - sto govori u prilog besplatnog Firebird-a u odnosu na komercijalni InterBase.


"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje09.05.2006. u 08:28 - pre 218 meseci
Wow, kakva zloupotreba baze...
 
Odgovor na temu

branimir.ts
Beograd

Član broj: 56661
Poruke: 127
*.

Sajt: www.geocities.com/brankob..


Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje09.05.2006. u 08:41 - pre 218 meseci
Kao prvo, zeleo bih da komentarisem samu sustinu gore navedenog problema.
U praksi su mi se vise puta pojavljivali - za razlicite RDBMS - ovakvi , slicni ili manje slicni "problemi".
Ono sto sam uspeo da zakljucim je da se ovakve stvari resavaju najcesce klasicnim "programerskim" putem, bez upotrebe SQL a ( ne kazem da SQL treba izbegavati po svaku cenu, sto se vidi iz mog ranije navedenog resenja).

Ali, kolega -alias DART_VEJDER je naglasio da ima postojecu bazu MS access , dakle kod njega bi bila dovoljna jedna VBA funkcija koja bi primala samo dva parametra - dateFrom i dateTo, bez ikakvog SQL -a . Ako bi moje gore navedeno resenje za MSSQL implemetirali u MS Access , odn u spomenutu VBA funkciju, to bi moglo da bude nesto poput sledeceg :
Code:

Public Function BrojDana (dateF As Date, dateT As Date) As Integer
Dim DaysBetween As Integer

While dateT - 1 >= dateF
        dateF = dateF + 1
        If DatePart("w", dateF) <> 1 Then
            DaysBetween = DaysBetween + 1
        End If
Wend
BrojDana = DaysBetween

End Function


Sto se tice tvog "skalabilnog resenja" ono ima samo jednu prednost. Zaista je portabilno.

Nazalost, sve ostalo su mane. Pocev od neprestanog dopunjavanja baze sa datumima i danima, uvodjenje novih tabela u postojece resenje, komplikacija sa excellom, pa cemu sve to brate mili ???

Pozdrav
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje09.05.2006. u 15:28 - pre 218 meseci
Chachka je potpuno u pravu. Resnje koje on nudi je u duhu SQL standarda - potpuno deklarativno, nasuprot proceduralnim resenjima koja zahtevaju pisanje proceduralnog koda. Zasto je problem napuniti tabelu subotama i nedeljama? Covek lep kaze, uradis to u Excelu i importujes u bazu. Nista vas ne sprecava da unesete sledecih deset hiljada nedelja.

Njegovo resenje ima jos jednu prednost. Mozete da unesete i bio koji drugi datum, ne samo subote i nedelje. Drzavni i verski praznici, neredni dani po bilo kojoj osnovi idu bez problema u njegovu tabelu. razlog sto je neko na pocetku trazio brojanje nedelja i subota jeste sto mu za neke proracune treba broj radnih dana izmedju dva datuma. Broj subota i nedelja nije kompletno niti tacno resenje. Postoje i drugi neradni dani, ne samo subote i nedelje. Zatim, ko kaze da se u buducnosti nece uvesti cetvorodnevna radna nedelja, gde se i peatk biti neradan. Sta cemo onda, da prepravimo funkcije? A moze se desiti da se subota proglasi radnim danom, pa i nedelja. Sve zavsi od situacije i bisnis problema koji resavamo. Pravo pitanje glasi 'kako naci sve neradne dane izmedju dva datuma' a ne 'kako napisati najefikasniju funkciju za pronalazenej broja nedelja izmedju dav datuma'.

Ovo sa praznicima nisam ja izmislio ili smislio sam, taman posla. Sve ima lepo objasnjeno u knjigama iz serije "Developers Handbook", napisao Ken Getz i drugari Paul Litwin, Greg Reddick i Mike Gilbert.

Posto je originalno pitanje bilo za Access, evo jednog Access resenja, koje doduse nije deklarativno, proceduralno je i ima dve funkcije:

http://www.mvps.org/access/datetime/date0006.htm


:-)
 
Odgovor na temu

branimir.ts
Beograd

Član broj: 56661
Poruke: 127
*.

Sajt: www.geocities.com/brankob..


Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje09.05.2006. u 16:02 - pre 218 meseci
Uf, cini mi se da sam jednom kritikovao jednog kolegu sa foruma zbog nacina razmisljanja slicnog tvom-doduse u poslednje vreme primecujem da je dosta naucio i zaista mi je drago zbog toga :)

Vidi ovako, cela ova tvoja prica me podseca na onu -zasto stvar uraditi iz jednog koraka kada moze i iz 100 ?
Zasto resiti problem sa tri varijable kada se moze kreirati tabela, insertovati 100 000 slogova, obelezavati posebno neradni i radni dani, importovati excel tabela u jos jednu osim postojecih, implementirati upite u SQL bazu podataka....

Izvini sto moram ovako da te pitam, ali jesi li ti normalan?

Moram se sloziti sa tobom da , je, najverovatnije, tvoje izlaganje (teorijski) tacno .
Ali, ipak i nakon svega sto si napisao, ostaje cinjenica da je za ovo tvoje "deklarativno" resenje potrebno izdvojiti neizmerno vise vremena u odnosu na "proceduralno" od koga ti toliko, cini mi se, bezis.
Naravno da je za svakog onog koji ima dovoljno vremena ( na pretek) - cak i onog koji ce raditi samo cetiri dana u nedelji (teorijski) i koji ima neogranicene resurse sto se tice hardvera, onakvo resenje zadovoljavajuce.

Iskreno, svako od nas se moze igrati bazama (koje ne sluze nicemu) do mile volje . Ali u ogromnim produkcionim sistemima vreme i resursi su stvari od neprocenjivog znacaja.
Zato treba teziti da se do resenja dodje na sto efikasniji nacin, a teoriju ostaviti za neko drugo, "slobodno" vreme.

Pozdrav

 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje09.05.2006. u 17:31 - pre 218 meseci
Stvarno ne znam sto se raspravljate kada je resenje trivijalno.

Ako imas polja DatumUzimanja i DatumVracanja u tabeli Promet onda bi upit koji vraca kolonu koja predstavlja broj dana koliko je neko drzao nesto ne racunajuci nedelje:

Code:

SELECT DateDiff("d", DatumUzimanja, DatumVracanja) - (DateDiff("d", DatumUzimanja, DatumVracanja) \ 7) - IIf(Weekday(DatumUzimanja) > Weekday(DatumVracanja), 1, 0) AS Drzao 
FROM Promet


Probaj!
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.tippnet.co.yu.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje09.05.2006. u 17:42 - pre 218 meseci
DART_VEJDER je trazio SQL UPIT! Nije spominjao Access, M$SQL, VBA, Delphi, Javu, ...

Najblizi odgovor mu je dala Ana Komazec. U njenom resenju se pojavio upit, ali njen upit radi samo u M$ svetu.

Kako god resavali originalni probleme pa i ostale probleme s datumima (papir i olovka, abakus, kompjuter), u glavi imamo mentalnu sliku Julijanskog kalendara. Ta mentalna slika je pretocena u tabelu i data bazi, tako da i baza moze da je koristi u resavanju originalnog problema.

Zidar je napisao ono sto je mene mrzelo da pisem.

Za kraj evo pitanja i od mene:

Koliko je bilo neradnih dana za katolike u Srbiji u Aprilu 2006 (Subota i Nedelja su tipicno neradni dani.)?

Ako ima zainteresovanih ja cu odgovoriti SQL-om.

Chachka


"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.tippnet.co.yu.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje09.05.2006. u 17:46 - pre 218 meseci
Citat:

Probaj!


Gorane to ne radi pod PostgreSQL-om, a ni pod FireBird-om! Mrzi me da instaliram Oracle i DB2 ali mislim da ne radi ni u njima.

Chachka iz Choke
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje09.05.2006. u 17:58 - pre 218 meseci
Pozdrav Chachki! Al' je svet mali!

Decko je trazio resenje za Access, slicno je i za MS SQL Server, a verovatno bi moglo da se prebaci na bilo sta od toga sto si naveo - bitno je sta radi navedeni izraz (mislio sam da se ovde pomaze ljudima kod konkretnih problema, a ne da se vodi filozofska rasprava i iznose resenja koja bi trebala da rade u bilo kom DBMS-u). Nisam hteo nikog da omalovazavam time sto sam rekao da je resenje trivijalno, a ne bih ni seo da napisem odgovor da niste suvise otisli u sirinu.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje10.05.2006. u 08:12 - pre 218 meseci
Citat:
chachka: u glavi imamo mentalnu sliku Julijanskog kalendara.

Ne znam za tebe, ali ja i svi ljudi koje znam (ne poznajem nijednog pravoslavnog popa doduše) koristimo Gregorijanski kalendar.

Trpati datume u tabelu ima logike samo ako se u tabelu stavljaju neradni dani, i to ne subote i nedelje, već samo praznici. Inače glavu dajem da svi, ali svi savremeni sistemi imaju funkcije ako ni za šta drugo ono za određivanje je li neki dan subota ili nedelja. Drugim rečima: u svakom, ali svakom sistemu može se napisati upit sličan onom koji je naveo goranvuc.
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje10.05.2006. u 14:32 - pre 218 meseci
Slazem se sa Jablanom u svemu:
Citat:
Trpati datume u tabelu ima logike samo ako se u tabelu stavljaju neradni dani, i to ne subote i nedelje, već samo praznici. Inače glavu dajem da svi, ali svi savremeni sistemi imaju funkcije ako ni za šta drugo ono za određivanje je li neki dan subota ili nedelja. Drugim rečima: u svakom, ali svakom sistemu može se napisati upit sličan onom koji je naveo goranvuc.

Posto se nedelje mogu odrediti kverijem, ne vidim razlog da se uopste pise ikakva funkcija za taj deo problema. Prema tome, nisam ja taj koji hoce da uradi nesto u 1000 koraka :-)

Posto su ovo diskusije, a ne odgovaranje na strogo uska pitanja, napomenuo sam da se mozda radi o problemu 'broj neradnih dana izmedju dva datuma', sto je malo opstije pitanje nego 'broj subota i nedelja izmedju dva datuma', pa je mozda vredno razmatranja. Za subote i nedelje dakle imamo kveri, a za praznike upotrebimo tabelu i sve je reseno. Bas kao sto rece Jablan u prvoj recenici citiranog teksta. Kombinovanje kverija koji racuna broj subota i nedelja izmedju dva datuma sa tabelom sa praznicima moze da bude komplikovan posao, pa stoga trpanje u tabelu svih subota i nedelja uz datume i nije tako glupo resenja kao sto se na prvi pogled moze uciniti.

Ko voli da pise funkcije, eto mu zabave - napisati funkciju koja za sledecih 100 godina ubacuje u tabelu sve subote i nedelje. koliko ce da bude velika ta tabela? Pa, otprilike 52 sedmice * 2 * 100 godina = 10,400 slogova, plus recimo 10 dana praznika godianje i eto nas na skoro 11,000 slogova. mnogo? I do't think so :-) Kad jednom napravite ovu tabelu, mozete je seliti iz baze u bazu. Na duzi rok gledano, stedi vreme.
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.tippnet.co.yu.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: SQL upit za broj dana ne racunajuci nedjelje10.05.2006. u 14:46 - pre 218 meseci
Citat:
jablan: Ne znam za tebe, ali ja i svi ljudi koje znam (ne poznajem nijednog pravoslavnog popa doduše) koristimo Gregorijanski kalendar.



Priznajem, moja greska :)



Ponovicu: Ja sam odgovorio na pitanje o UPITU koji resava problem. Pitanje je postavljeno u forumu o bazama podataka. Nisam odgovorio na pitanje postavljeno u Access forumu pod temom broj dana minus nedjelje (Borland i baza). Nisam odgovorio na pitanje 'Koliko je dugacak najkraci exe fajl koji racuna razliku izmedju dva dana bez Nedelja, a da usput rezultat izbaci na LPT port?'





Inace, ako me neko pita: "Na koji datum pada pravoslavni Uskrs 2007. godine?", mogu da dam vise odgovora.


1. Pogledaj u crkvenom kalendaru Srpske Pravoslavne Crkve.

(Odgovor je tacan, ali je beskoristan ako ta osoba nema spomenuti kalendar.)


2. Evo ti jednacine pa izracunaj, a resenje je po Julijanskom kalendaru:

G = Godina MOD 19
I = (19*G + 15) MOD 30
J = (Godina + Godina DIV 4 + I) MOD 7
L = I - J
Mesec = 3 + (L + 40) DIV 44
Dan = L + 28 - 31* (Mesec DIV 4)

(Odgovor je opet tacan, ali je beskoristan za osobu koja nezna sta su DIV i MOD (npr. moja baba))


3. 8.4.2007. po Gregorijanskom ili 26.3.2007. po Julijanskom kalendaru.

(Odgovor je valjda tacan, koristan, ali osoba nece znati da se snadje 2008. godine.)


Lista odgovora nije potpuna... Koji cu odgovor odabrati zavisi od mog raspolozenja, od osobe koja je postavila pitanje, od cilja koji hocu da postignem odgovaranjem na pitanje, ....



Chachka



"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

[es] :: Baze podataka :: SQL upit za broj dana ne racunajuci nedjelje

Strane: 1 2

[ Pregleda: 8220 | Odgovora: 24 ] > FB > Twit

Postavi temu Odgovori

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