Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Obliczanie ilości dni
Kamilo
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
cytrysek
post
Post #2





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:
  1. DROP FUNCTION IF EXISTS BizDateTimeDiff;
  2. //DELIMITER
  3. CREATE FUNCTION BizDateTimeDiff( d1 DATETIME, d2 DATETIME )
  4. RETURNS CHAR(30)
  5. DETERMINISTIC
  6. BEGIN DECLARE dow1, dow2, days, wknddays INT;
  7. DECLARE tdiff CHAR(10);
  8. SET dow1 = DAYOFWEEK(d1);
  9. SET dow2 = DAYOFWEEK(d2);
  10. SET tdiff = TIMEDIFF( TIME(d2), TIME(d1) );
  11. SET days = DATEDIFF(d2,d1);
  12. SET wknddays = 2 * FLOOR( days / 7 ) +
  13. IF( dow1 = 1 AND dow2 > 1, 1,
  14. IF( dow1 = 7 AND dow2 = 1, 1,
  15. IF( dow1 > 1 AND dow1 > dow2, 2,
  16. IF( dow1 < 7 AND dow2 = 7, 1, 0 )
  17. )
  18. )
  19. );
  20. SET days = FLOOR(days - wkndDays) - IF( ASCII(tdiff) = 45, 1, 0 );
  21. SET tdiff = IF( ASCII(tdiff) = 45, TIMEDIFF( '24:00:00', SUBSTRING(tdiff,2)), TIMEDIFF( tdiff, '00:00:00' ));
  22. RETURN CONCAT( days, ' days ', tdiff );
  23. END;
  24.  
  25. DELIMITER ;

a potem juz tylko proste zapytanie :
  1. SELECT BizDateTimeDiff( '2007-1-1 00:00:00', '2007-3-31 00:00:00' ) AS dtdiff;


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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 00:48