Index: ../sites/all/modules/webform/components/date.inc
===================================================================
--- ../sites/all/modules/webform/components/date.inc	(revision 185)
+++ ../sites/all/modules/webform/components/date.inc	(working copy)
@@ -21,6 +21,7 @@
       'year_start' => '-2',
       'year_end' => '+2',
       'year_textfield' => 0,
+      'day_optional' => 0,
       'datepicker' => 1,
       'title_display' => 0,
       'description' => '',
@@ -88,6 +89,15 @@
     '#parents' => array('extra', 'year_textfield'),
   );
 
+  $form['display']['day_optional'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Make day field optional'),
+    '#default_value' => $component['extra']['day_optional'],
+    '#description' => t('If checked, the day field will not be validated.'),
+    '#weight' => 10,
+    '#parents' => array('extra', 'day_optional'),
+  );
+
   $form['validation']['year_start'] = array(
     '#type' => 'textfield',
     '#title' => t('Start year'),
@@ -211,6 +221,11 @@
     }
   }
 
+  // day optional?
+  if ($component['extra']['day_optional']) {
+    unset($element['day']);
+  }
+
   // Tweak the year field.
   if ($component['extra']['year_textfield']) {
     $element['year']['#type'] = 'textfield';
@@ -283,8 +298,11 @@
       return;
     }
   }
-  // Check for a valid date.
-  if ($element['month']['#value'] !== '' || $element['day']['#value'] !== '' || $element['year']['#value'] !== '') {
+  if ($element['month']['#value'] !== '' || ($element['day']['#value'] !== '' && !$component['extra']['day_optional']) || $element['year']['#value'] !== '') {
+    // day optional? use day 1
+    if ($component['extra']['day_optional']) {
+      $element['day']['#value'] = '1';
+    }
     if (!checkdate((int)$element['month']['#value'], (int)$element['day']['#value'], (int)$element['year']['#value'])) {
       form_error($element, t('Entered !name is not a valid date.', array('!name' => $name)));
       return;
