Author: Not specified Language: text
Description: Not specified Timestamp: 2018-05-30 12:04:12 +0000
View raw paste Reply
  1. DELIMITER //
  2.  
  3. CREATE FUNCTION f_media
  4.         (p_week INT, p_day INT) RETURNS INT(2)
  5.  
  6. BEGIN
  7.         DECLARE v_out INT;
  8.         DECLARE v_date DATETIME;
  9.         DECLARE v_dateish INT;
  10.        
  11.         /**
  12.         MAKEDATE() telt een aantal dagen op vanaf een gegeven start datum.
  13.         EXTRACT() en DAYOFWEEK() extraheren het daadwerkelijke week- en dag nummer van het jaar.
  14.        
  15.         De eerste dag van het jaar, 01-01-2014, is niet daadwerkelijk de eerste dag van de eerste
  16.         week zoals MAKEDATE() zou doen vermoeden.
  17.  
  18.         Om deze discrepantie te verhelpen houd ik in de functie rekening met de daadwerkelijke
  19.         start dag (+4) van het jaar, zodoende geven MAKEDATE(), EXTRACT() en DAYOFWEEK() de zelfde
  20.         dag van het jaar 2014 weer.
  21.         **/
  22.        
  23.         SET v_dateish = (((p_week * 7) -7) +4) + p_day;
  24.         SET v_date = MAKEDATE('2014', v_dateish);
  25.        
  26.         SELECT COUNT(*) INTO v_out
  27.         FROM mediauitingen
  28.         WHERE mediauitingen.date = v_date;
  29.         RETURN v_out;
  30. END//
View raw paste Reply