Невозможно извлечь значение метки времени в mysql в переменную time.Time - PullRequest
0 голосов
/ 04 апреля 2019

Я не могу получить значение метки времени mysql в time.Time переменная

Я пытаюсь отсканировать строку, все значения успешно сканируются, кроме типа отметки времени в mysql, я уже использую dsn parseTime = true, что было одной из проблем, которые я искал, но это не помогает

        type Tags struct {
            ID             int
            CreatedAt      time.Time `json:"created_at"`
        }
        func foo5() {
            http.HandleFunc("/tags/", bar5)
            http.ListenAndServe(":8080", nil)
        }

        func bar5(w http.ResponseWriter, r *http.Request) {
            db, err := sql.Open("mysql", "root:*******@/catalogue_service?parseTime=true")
            if err != nil {
            fmt.Println("error opening")
            }
            v, _ := strconv.Atoi(path.Base(r.URL.Path))
            row := db.QueryRow("select * from tags where id = ?", v)
            var myRow Tags
            row.Scan(&myRow.ID, &myRow.CreatedAt)
            fmt.Println(myRow)
        }

int и строковые значения отображаются правильно, но CreatedAt печатает 0001-01-01 00:00:00 +0000 UTC вместо фактического значения

Edit:

 +-----------------+--------------------------+------+-----+-------------------+-----------------------------------------------+
| Field           | Type                     | Null | Key | Default           | Extra                                         |
+-----------------+--------------------------+------+-----+-------------------+-----------------------------------------------+
| id              | int(11)                  | NO   | PRI | NULL              | auto_increment                                |
| created_at      | timestamp                | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED                             |
+-----------------+--------------------------+------+-----+-------------------+-----------------------------------------------+

| 84 | 2019-01-30 11:21:36 |

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Ошибка была устранена мной самостоятельно, в таблице были нулевые значения, которые Scan не мог обработать, поэтому я использовал тип sql.NULLString или mysql.NULLTime в структуре в зависимости от поля

0 голосов
/ 04 апреля 2019

Вы зарегистрировали драйвер mysql следующим образом?

import _ "github.com/go-sql-driver/mysql"

Смотрите использование здесь:

https://github.com/go-sql-driver/mysql#usage

https://github.com/go-sql-driver/mysql#timetime-support

...