@@ -316,7 +316,7 @@ func QValueFromMysqlFieldValue(qkind types.QValueKind, mytype byte, fv mysql.Fie
316316 if strings .HasPrefix (unsafeString , "0000-00-00" ) {
317317 return types.QValueTimestamp {Val : time .Unix (0 , 0 )}, nil
318318 }
319- val , err := time .Parse ("2006-01-02 15:04:05.999999" , unsafeString )
319+ val , err := time .Parse ("2006-01-02 15:04:05.999999" , strings . ReplaceAll ( unsafeString , "-00" , "-01" ) )
320320 if err != nil {
321321 return nil , err
322322 }
@@ -334,7 +334,7 @@ func QValueFromMysqlFieldValue(qkind types.QValueKind, mytype byte, fv mysql.Fie
334334 if unsafeString == "0000-00-00" {
335335 return types.QValueDate {Val : time .Unix (0 , 0 )}, nil
336336 }
337- val , err := time .Parse (time .DateOnly , unsafeString )
337+ val , err := time .Parse (time .DateOnly , strings . ReplaceAll ( unsafeString , "-00" , "-01" ) )
338338 if err != nil {
339339 return nil , err
340340 }
@@ -469,13 +469,13 @@ func QValueFromMysqlRowEvent(
469469 return types.QValueTime {Val : tm }, nil
470470 case types .QValueKindDate :
471471 if val == "0000-00-00" {
472- return types.QValueDate {Val : time .Unix (0 , 0 )}, nil
472+ return types.QValueDate {Val : time .Unix (0 , 0 ). UTC () }, nil
473473 }
474- val , err := time .Parse (time .DateOnly , val )
474+ val , err := time .Parse (time .DateOnly , strings . ReplaceAll ( val , "-00" , "-01" ) )
475475 if err != nil {
476476 return nil , err
477477 }
478- return types.QValueDate {Val : val }, nil
478+ return types.QValueDate {Val : val . UTC () }, nil
479479 case types .QValueKindTimestamp : // 0000-00-00 ends up here
480480 if mytype == mysql .MYSQL_TYPE_TIME || mytype == mysql .MYSQL_TYPE_TIME2 {
481481 tm , err := processTime (val )
@@ -485,13 +485,13 @@ func QValueFromMysqlRowEvent(
485485 return types.QValueTimestamp {Val : time .Unix (0 , 0 ).UTC ().Add (tm )}, nil
486486 }
487487 if strings .HasPrefix (val , "0000-00-00" ) {
488- return types.QValueTimestamp {Val : time .Unix (0 , 0 )}, nil
488+ return types.QValueTimestamp {Val : time .Unix (0 , 0 ). UTC () }, nil
489489 }
490- tm , err := time .Parse ("2006-01-02 15:04:05.999999" , val )
490+ tm , err := time .Parse ("2006-01-02 15:04:05.999999" , strings . ReplaceAll ( val , "-00" , "-01" ) )
491491 if err != nil {
492492 return nil , err
493493 }
494- return types.QValueTimestamp {Val : tm }, nil
494+ return types.QValueTimestamp {Val : tm . UTC () }, nil
495495 }
496496 }
497497 return nil , fmt .Errorf ("unexpected type %T for mysql type %d, qkind %s" , val , mytype , qkind )
0 commit comments