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
SELECT count(*) FROM tabela_z_datami WHERE numer_dnia NOT IN(6,7) AND DATA >= 'data1' AND DATA <= 'data2'
SELECT count(*) FROM tabela_z_datami WHERE DAYOFWEEK( ADDDATE(data1,tabela_z_datami.id ) ) NOT IN(1,6) AND ADDDATE(data1,tabela_z_datami.id ) >= 'data1' AND ADDDATE(data1,tabela_z_datami.id ) <= 'data2' AND tabela_z_datami.id < datediff('data2','data1')
DROP FUNCTION IF EXISTS BizDateTimeDiff; //DELIMITER CREATE FUNCTION BizDateTimeDiff( d1 DATETIME, d2 DATETIME ) RETURNS CHAR(30) DETERMINISTIC BEGIN DECLARE dow1, dow2, days, wknddays INT; DECLARE tdiff CHAR(10); SET dow1 = DAYOFWEEK(d1); SET dow2 = DAYOFWEEK(d2); SET tdiff = TIMEDIFF( TIME(d2), TIME(d1) ); SET days = DATEDIFF(d2,d1); SET wknddays = 2 * FLOOR( days / 7 ) + IF( dow1 = 1 AND dow2 > 1, 1, IF( dow1 = 7 AND dow2 = 1, 1, IF( dow1 > 1 AND dow1 > dow2, 2, IF( dow1 < 7 AND dow2 = 7, 1, 0 ) ) ) ); SET days = FLOOR(days - wkndDays) - IF( ASCII(tdiff) = 45, 1, 0 ); SET tdiff = IF( ASCII(tdiff) = 45, TIMEDIFF( '24:00:00', SUBSTRING(tdiff,2)), TIMEDIFF( tdiff, '00:00:00' )); RETURN CONCAT( days, ' days ', tdiff ); END; DELIMITER ;
SELECT BizDateTimeDiff( '2007-1-1 00:00:00', '2007-3-31 00:00:00' ) AS dtdiff;