           when 0
             isNull = true
           when 4
-            days = buffer.readUInt16LE()
-            minutes = buffer.readUInt16LE()
-            
-            value = new Date(1900, 0, 1)
-            value.setDate(value.getDate() + days)
-            value.setMinutes(value.getMinutes() + minutes)
+            value = readSmallDateTime(buffer)
           when 8
-            days = buffer.readInt32LE()
-            threeHundredthsOfSecond = buffer.readUInt32LE()
-            milliseconds = threeHundredthsOfSecond * THREE_AND_A_THIRD
-            
-            value = new Date(1900, 0, 1)
-            value.setDate(value.getDate() + days)
-            value.setMilliseconds(value.getMilliseconds() + milliseconds)
+            value = readDateTime(buffer)
       when 'NumericN', 'DecimalN'
         dataLength = buffer.readUInt8()
 

      event: 'row'
      columns: columns

module.exports = parser

          when 1
            value = !!buffer.readUInt8()
      when 'VarChar', 'Char'
        {value: value, isNull: isNull} = readChars(buffer, 'ascii')
      when 'NVarChar', 'NChar'
        {value: value, isNull: isNull} = readChars(buffer, 'ucs2')
      when 'SmallDateTime'
        value = readSmallDateTime(buffer)
      when 'DateTime'
        value = readDateTime(buffer)
      when 'DateTimeN'
        dataLength = buffer.readUInt8()

