private static function getScheduleBirthMember(array $months, $day = null, $is_setKeydate = true)
 {
     $memberId = self::getMyId();
     if (is_null(self::$birth_prof_id)) {
         $profile = Doctrine::getTable('Profile')->createQuery()->select('id')->where('name = ?', 'op_preset_birthday')->fetchOne(array(), Doctrine::HYDRATE_NONE);
         if (!$profile) {
             return array();
         }
         self::$birth_prof_id = $profile[0];
     }
     if (is_null(self::$friendIds)) {
         self::$friendIds = Doctrine::getTable('MemberRelationship')->getFriendMemberIds($memberId);
         self::$friendIds[] = $memberId;
     }
     $q = Doctrine::getTable('MemberProfile')->createQuery()->select('member_id, value_datetime, public_flag')->where('profile_id = ?', self::$birth_prof_id)->andWhereIn('member_id', self::$friendIds);
     $driverName = Doctrine::getConnectionByTableName('MemberProfile')->getDriverName();
     foreach ($months as $month) {
         $targetDate = $day ? sprintf('%02d-%02d', (int) $month, (int) $day) : sprintf('%02d', (int) $month);
         if ($driverName === 'Sqlite') {
             $targetValue = array($day ? '%m-%d' : '%m', $targetDate);
             $q->andWhere('strftime(?, value_datetime) = ?', $targetValue);
         } else {
             if ($driverName === 'Pgsql') {
                 $targetValue = array($day ? 'MM-DD' : 'MM', $targetDate);
                 $q->andWhere('to_char(value_datetime, ?) = ?', $targetValue);
             } else {
                 $targetValue = array($day ? '%m-%d' : '%m', $targetDate);
                 $q->andWhere('DATE_FORMAT(value_datetime, ?) = ?', $targetValue);
             }
         }
     }
     $birthResults = $q->execute(array(), Doctrine::HYDRATE_NONE);
     if (!count($birthResults)) {
         return array();
     }
     $results = array();
     foreach ($birthResults as $birthResult) {
         if ($memberId != $birthResult[0] && ProfileTable::PUBLIC_FLAG_PRIVATE == $birthResult[2]) {
             continue;
         }
         $member = Doctrine::getTable('Member')->find($birthResult[0]);
         if ($is_setKeydate) {
             $results[substr($birthResult[1], 5, 5)][] = $member;
         } else {
             $results[] = $member;
         }
     }
     return $results;
 }