COuld it simply be that lastRow["Effective_x0020_Date"] is DBNull? Then you would have the initial value (null) in effectivedate;
When assigning the data row value, try using null coalescing operator
dr["EffectiveDate"] = effectivedate ?? DBNull.Value;