Nieuw lid | 
                         | 
                        [color=red] 
Wat is voor onzin hier, ik bijna zeggen asociaal. Men stelt een vraag, krijgt antwoord, en komt vervolgens niet meer terug in de topic! 
 
Houdoe!!!!!!!! 
[/color] 
_____________ 
 
Nouja zo makkelijk is het niet   
 
Als je in MySQL een datum hebt, dan is dit de afgelopen (of dezelfde) woensdag: 
    
    
        
            
                DATE_SUB( DATE(`datum`) , INTERVAL (DAYOFWEEK(`datum`)+3)%7 DAY ) 
             
            DATE_SUB( DATE(`datum`) , INTERVAL (DAYOFWEEK(`datum`)+3)%7 DAY ) 
 
  
         
          
     
  
 
en dan is dit de volgende woensdag: (altijd 7 dagen later) 
    
    
        
            
                DATE_ADD( DATE(`datum`) , INTERVAL ((10-DAYOFWEEK(`datum`))%7)+1 DAY ) 
             
            DATE_ADD( DATE(`datum`) , INTERVAL ((10-DAYOFWEEK(`datum`))%7)+1 DAY ) 
 
  
         
          
     
  
 
Nu heb je een tabel `wedstrijden` met o.a. een kolom `datum` en je wilt de wedstrijden selecteren vanaf afgelopen woensdag tot volgende woensdag. 
 
Op zich hoef je maar 1 van die twee formules te gebruiken. 
Bijvoorbeeld die bovenste: 
    
    
        
            
                SELECT * FROM `wedstrijden` WHERE
    DATE_SUB(DATE(`datum`), INTERVAL (DAYOFWEEK(`datum`)+3)%7 DAY)
    = DATE_SUB(CURDATE(), INTERVAL (DAYOFWEEK(CURDATE())+3)%7 DAY)
    ;
             
            SELECT * FROM `wedstrijden` WHERE     DATE_SUB(DATE(`datum`), INTERVAL (DAYOFWEEK(`datum`)+3)%7 DAY)     = DATE_SUB(CURDATE(), INTERVAL (DAYOFWEEK(CURDATE())+3)%7 DAY)     ; 
 
  
         
          
     
  
 
Of die onderste: 
    
    
        
            
                SELECT * FROM `wedstrijden` WHERE
    DATE_ADD(DATE(`datum`), INTERVAL ((10-DAYOFWEEK(`datum`))%7)+1 DAY)
    = DATE_ADD(CURDATE(), INTERVAL ((10-DAYOFWEEK(CURDATE()))%7)+1 DAY)
    ;
             
            SELECT * FROM `wedstrijden` WHERE     DATE_ADD(DATE(`datum`), INTERVAL ((10-DAYOFWEEK(`datum`))%7)+1 DAY)     = DATE_ADD(CURDATE(), INTERVAL ((10-DAYOFWEEK(CURDATE()))%7)+1 DAY)     ; 
 
  
         
          
     
  
 
Maar het is natuurlijk veel efficienter om het volgende te doen: 
    
    
        
            
                SELECT * FROM `wedstrijden` WHERE
    `datum` >= DATE_SUB(CURDATE(), INTERVAL (DAYOFWEEK(CURDATE())+3)%7 DAY)
    AND `datum` < DATE_ADD(CURDATE(), INTERVAL ((10-DAYOFWEEK(CURDATE()))%7)+1 DAY)
    ;
             
            SELECT * FROM `wedstrijden` WHERE     `datum` >= DATE_SUB(CURDATE(), INTERVAL (DAYOFWEEK(CURDATE())+3)%7 DAY)     AND `datum` < DATE_ADD(CURDATE(), INTERVAL ((10-DAYOFWEEK(CURDATE()))%7)+1 DAY)     ; 
 
  
         
          
     
  |