@@ -1341,7 +1341,7 @@ func (e *RowsEvent) decodeValue(data []byte, tp byte, meta uint16, isPartial boo
1341
1341
hours := int (t / 10000 )
1342
1342
minutes := int ((t % 10000 ) / 100 )
1343
1343
seconds := int (t % 100 )
1344
- if months == 0 || days == 0 {
1344
+ if ! e . parseTime || months == 0 || days == 0 {
1345
1345
v = fmt .Sprintf ("%04d-%02d-%02d %02d:%02d:%02d" ,
1346
1346
years , months , days , hours , minutes , seconds )
1347
1347
} else {
@@ -1361,7 +1361,7 @@ func (e *RowsEvent) decodeValue(data []byte, tp byte, meta uint16, isPartial boo
1361
1361
}
1362
1362
}
1363
1363
case mysql .MYSQL_TYPE_DATETIME2 :
1364
- v , n , err = decodeDatetime2 (data , meta )
1364
+ v , n , err = decodeDatetime2 (data , meta , e . parseTime )
1365
1365
v = e .parseFracTime (v )
1366
1366
case mysql .MYSQL_TYPE_TIME :
1367
1367
n = 3
@@ -1686,7 +1686,7 @@ func decodeTimestamp2(data []byte, dec uint16, timestampStringLocation *time.Loc
1686
1686
1687
1687
const DATETIMEF_INT_OFS int64 = 0x8000000000
1688
1688
1689
- func decodeDatetime2 (data []byte , dec uint16 ) (interface {}, int , error ) {
1689
+ func decodeDatetime2 (data []byte , dec uint16 , parseTime bool ) (interface {}, int , error ) {
1690
1690
// get datetime binary length
1691
1691
n := int (5 + (dec + 1 )/ 2 )
1692
1692
@@ -1736,8 +1736,8 @@ func decodeDatetime2(data []byte, dec uint16) (interface{}, int, error) {
1736
1736
// minute = 0 = 0b000000
1737
1737
// second = 0 = 0b000000
1738
1738
// integer value = 0b1100100000010110000100000000000000000 = 107420450816
1739
- if intPart < 107420450816 || month == 0 || day == 0 {
1740
- return formatBeforeUnixZeroTime (year , month , day , hour , minute , second , int (frac ), int (dec )), n , nil
1739
+ if ! parseTime || intPart < 107420450816 || month == 0 || day == 0 {
1740
+ return formatDatetime (year , month , day , hour , minute , second , int (frac ), int (dec )), n , nil
1741
1741
}
1742
1742
1743
1743
return fracTime {
0 commit comments