diff --git includes/webform.report.inc includes/webform.report.inc
index efb841c..6ddd1be 100644
--- includes/webform.report.inc
+++ includes/webform.report.inc
@@ -384,6 +384,27 @@ function webform_results_download_form(&$form_state, $node) {
     '#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'),
@@ -392,12 +413,28 @@ function webform_results_download_form(&$form_state, $node) {
   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);
 }
@@ -501,6 +538,7 @@ function webform_results_download($node, $format = 'delimited', $options = array
       'components' => array_merge(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 {
@@ -549,7 +587,7 @@ function webform_results_download($node, $format = 'delimited', $options = array
   }
 
   // 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;
diff --git includes/webform.submissions.inc includes/webform.submissions.inc
index 01ab6d6..56964ea 100644
--- includes/webform.submissions.inc
+++ includes/webform.submissions.inc
@@ -573,7 +573,17 @@ function webform_get_submissions($filters = array(), $header = NULL, $pager_coun
     $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;
+      }
+      else if ($column == 'end_date') {
+        $end = empty($value) ? strtotime('now') : strtotime($value);
+        $where[] = 'submitted < ' . $end;
+      }
+      else {
+        $where[] = $column . ' = ' . (is_numeric($value) ? '%d' : "'%s'");
+      }
     }
 
     if (isset($filters['u.uid']) && $filters['u.uid'] === 0) {
