Search code examples
mysqldatabasego

How to convert Go time.Time into MySQL datetime?


I am generating a datetime string in Go and when I insert the generated value into a MySQL table, the value of the column becomes: 0000-00-00 00:00:00 but it is supposed to be: 2019-08-21 11:05:45.

I do not understand why the datetime becomes zero, I guess there is some mismatch.

goDateTime := time.Now().Format("02-01-2006 03:04:05") 

The above code returns datetime as a string. But in my database table the column type is datetime. I changed the database type to varchar and it worked, but I want to use the datetime time.


Solution

  • Your date format string is not compatible with MySQL, which requires datetime values to be in YYYY-MM-DD hh:mm:ss format, where hh is a 24-hour value (see the manual). It should be

    golangDateTime := time.Now().Format("2006-01-02 15:04:05") 
    

    Note you can also use the constant time.DateTime, which maps to the same value. See the manual.