Index: includes/webform.report.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/webform/includes/webform.report.inc,v
retrieving revision 1.16.2.10
diff -u -p -r1.16.2.10 webform.report.inc
--- includes/webform.report.inc	29 Sep 2010 18:38:19 -0000	1.16.2.10
+++ includes/webform.report.inc	17 Dec 2010 22:58:10 -0000
@@ -390,6 +390,27 @@ function webform_results_download_form(&
     '#process' => array('webform_component_select'),
   );
 
+  $form['more_options'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('More options'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+  );
+  
+  $form['more_options']['start_date'] = array(
+    '#type'=>'textfield',
+    '#title'=>t('Start Date'),
+    '#description'=>t('Enter a date in dd-mm-yyyy format'),
+  );
+  
+  $form['more_options']['end_date'] = array(
+    '#type'=>'textfield',
+    '#title'=>t('End Date'),
+    '#description'=>t('Enter a date in dd-mm-yyyy format'),
+  );
+
+  $form['#validate'][] = 'webform_results_download_form_validate';//check for valid begin/end dates
+
   $form['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Download'),
@@ -398,12 +419,28 @@ function webform_results_download_form(&
   return $form;
 }
 
+function webform_results_download_form_validate($node, &$form) {
+    if (!empty($form['values']['start_date']) && strtotime($form['values']['start_date']) === false) {
+        form_set_error('invalid start date', t('Please enter a valid start date.'));
+    }
+  
+    if (!empty($form['values']['end_date']) && strtotime($form['values']['end_date']) === false) {
+        form_set_error('invalid end date', t('Please enter a valid end date.'));
+    }
+  
+    if (!empty($form['values']['start_date']) && !empty($form['values']['end_date']) && (strtotime($form['values']['end_date']) < strtotime($form['values']['start_date']))) {
+        form_set_error('start date greater than end date', t('Start date cannot be after end date - please alter one or the other.'));
+    }
+  
+}
+
 function webform_results_download_form_submit(&$form, &$form_state) {
   $options = array(
     'delimiter' => $form_state['values']['delimiter'],
     'components' => array_keys(array_filter($form_state['values']['components'])),
     'select_keys' => $form_state['values']['select_keys'],
     'select_format' => $form_state['values']['select_format'],
+    'more_options' => array('start_date' => $form_state['values']['start_date'], 'end_date' => $form_state['values']['end_date']),
   );
   webform_results_download($form_state['values']['node'], $form_state['values']['format'], $options);
 }
@@ -506,6 +543,7 @@ function webform_results_download($node,
       'components' => array_keys($submission_information) + array_keys(webform_component_list($node, 'csv', TRUE)),
       'select_display' => 'value',
       'select_format' => 'separate',
+      'more_options' => array('start_date' => '0', 'end_date' => 'now'),
     );
   }
   else {
@@ -554,7 +592,7 @@ function webform_results_download($node,
   }
 
   // Get all the submissions for the node.
-  $submissions = webform_get_submissions($node->nid);
+  $submissions = webform_get_submissions(array('nid'=>$node->nid, 'start_date'=>$options['more_options']['start_date'], 'end_date'=>$options['more_options']['end_date']));
 
   // Generate a row for each submission.
   $row_count = 0;
Index: includes/webform.submissions.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/webform/includes/webform.submissions.inc,v
retrieving revision 1.18.2.12
diff -u -p -r1.18.2.12 webform.submissions.inc
--- includes/webform.submissions.inc	8 Sep 2010 05:23:47 -0000	1.18.2.12
+++ includes/webform.submissions.inc	17 Dec 2010 22:58:10 -0000
@@ -280,9 +280,18 @@ function webform_get_submissions($filter
     $arguments = array_values($filters);
     $where = array();
     foreach ($filters as $column => $value) {
-      $where[] = $column . ' = ' . (is_numeric($value) ? '%d' : "'%s'");
+        if($column == 'start_date'){
+            $start = empty($value) ? 0 : strtotime($value);
+            $where[] = 'submitted > ' . $start;
+        } elseif ($column == 'end_date'){
+            $end = empty($value) ? strtotime('now') : strtotime($value);
+            $where[] = 'submitted < ' . $end;
+        } else {
+            $where[] = $column . ' = ' . (is_numeric($value) ? '%d' : "'%s'");
+        }
     }
 
+
     if (isset($filters['uid']) && $filters['uid'] === 0 && isset($_SESSION['webform_submission'])) {
       $anonymous_sids = array_keys($_SESSION['webform_submission']);
       if (count($anonymous_sids)) {
