![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 4.12.2006 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Witam
Są jakieś gotowe funkcje za pomocą których mogłabym obliczyć ilość dni pomiędzy dwoma datami ? np. "2006-01-06" i "2006-12-15" interesuje mnie ilość dni pomiędzy tymi dwoma datami. Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No ale czy tak ciezko zajrzec do manuala?
http://dev.mysql.com/doc/refman/5.0/en/dat...-functions.html Do wyboru do koloru -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 4.12.2006 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 4.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
a w jaki sposób obliczyć liczbę dni bez sobót i niedziel ![]() pzdr. PW |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 4 Dołączył: 24.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
są 2 wyjścia jedno łatwe i brzydkie 2 trudniejsze dla początkujących i możesz nie podołać.
opcja łatwa dla noobów : jeśli znasz przedział czasowy w jakim będzie działać aplikacja możesz utworzyć table z datami o strukturze id|data|numer_dnia wypełniasz tą table wstępnie na pare lat rok ma 365dni wiec jak zrobisz nawet na 10 lat to będzie działało ok. i tera piszesz tak.
a druga metoda to funkcja wbudowana którą obliczasz to w pętli nie pisze przykładu bo sma bym musiał nad tym trochę po mędrkować . jeśli jest inna opcja proszę o nie miłosierne skarcenia ![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
jesli nie koniecznie musi to byc na mysql to:
http://nospor.pl/liczba-dni-roboczych-n23.html -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 91 Pomógł: 1 Dołączył: 22.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
A czy nie bylo by lepiej pracowac na znaczkach czasu i przechowywac w bazie znaczki czasu. Wydaje mi sie ze to troche wydajniejsze niz pokretne zapytanie mysql
-------------------- Czy sprzedal sie juz czy dopiero ma? Oto pytanie, ktore stawiam wam. A czemu gdy byl, to nic tylko spal? Ze mna co lubie go gadac nic nie chcial. A czemu to gra, a tamtego nie. Chyba nas wszystkich nic nie szanuje. Jaki byl kiedy pil? Jaki byl kiedy gral? Czy to ten czlowiek sam czy moze rozni dwaj?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 4.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wolałbym jednak zapytanie mysql.
http://nospor.pl/liczba-dni-roboczych-n23.html tak widziałem, ale zapytanie mysql w moim przypadku byłoby wygodniejsze. Ja to widze tak (czysta teoria): mam 2 daty data_start i data_end 1. obliczam liczbe dni z tego przedzialu (np za pomocą DATEDIFF) 2. a od wyniku odejmuję liczbę dni, które w tym przedziale czasowym mają numer dnia 6 i 7. ad. 1 wiem jak zrobic, a jak ugryźć ad 2 bez tworzenia dodatkowych znaczkow w bazie? dzieki za pomoc. PW |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 4 Dołączył: 24.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ja osobiście nie wiem ale mam trochę upraszczający sprawę z dodatkową tabelą temat:
otóż tworzymy tabela : |id| i wypełniamy ją od 1 do liczby która przyjmujesz za maksymalną rozpiętość daty.
jak widać zapytanie nie wygląda szczególniej grożenie i wydaje mi się ze będzie działać dobrze. Jedynym ograniczeniem jest konieczność założenia maksymalnej rospiętości data czyli data2 - data1 oczywiście możesz ze spokojem zrobić tabel o maxymlnym id np. rónym maxymalnej liczbie dla integer 12 jeśli to to id będzie kluczem nie będzie miało to wpływu na wydajność zapytania. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 4.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
No to znalazłem !
http://www.artfulsoftware.com/infotree/que...&bw=1280#91 użyłem procedurki:
a potem juz tylko proste zapytanie :
i działa super. nawet nie wiedziałem, że takie cuda można w mysql. Mam pytanie, czy taka procedura będzie juz ustawiona na stałe (wrzuciłemją spod konsoli), czy np po restarcie bazy już nie zadziała? Czy ma ktos pomysł jak ją rozszerzyć, by dodac jeszcze święta ? pzdr. PW |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 6.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam, tak czytam ten post - dużo skorzystałam, jestem historyczką i stwierdziłam że na odległych datach te funkcje się nie nadają
W (naszym) kalendarzu gregoriańskim obowiązuje system: - rok jest zwykły, jeśli nie dzieli się przez 4 - rok jest przestępny, jeżeli dzieli się przez 4, wyjątek: - jeżeli dzieli się przez 100 a nie jest podzielny przez 400 to jest zwykły. A gregoriański istnieje dopiero od 15 października 1582, wcześniej stosowali inny kalendarz Juliański (i inny system roku przestępnego) różniący się 10 dni, i zaraz po 5 października nastał 15 października - a tego niestety w funkcjach nie uwzględniają, do długich dat się nie nadaje. Najlepiej właśnie przeliczyć te daty na system liczb w zapisie dni juliańskich i odciąć je od siebie. algorytm liczenia dni juliańskich: http://cybermoon.w.interia.pl/wiedza/algor...julian_day.html i jak obliczyć: http://cybermoon.w.interia.pl/wiedza/algor...legle_daty.html |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 10:23 |