首页 > 解决方案 > 将mysql datetime解析为golang时间

问题描述

我的表中有 MySQL 日期时间,采用 MySQL 标准格式,例如

“2018-09-19 18:26:32.000000”

当我尝试使用函数将它转换为 golang 时间时time.parse(),我得到了错误

解析时间“2018-09-19 18:26:32.000000”:超出范围的月份

我尝试在线搜索,并且该格式似乎被许多人允许并常用来成功解析。

任何人都可以帮助我解决我所缺少的吗?下面是我正在使用的代码片段。

import (
    "fmt"
    "time"
)

layout := "2018-09-19 18:26:32.000000"
fmt.Println(val)
// prints 2018-09-19 18:26:32.000000
t, err := time.Parse(layout, val)
fmt.Println(fmt.Println(t.Unix()))
// prints -62135596800 
fmt.Println(err)
// prints parsing time "2018-09-19 18:26:32.000000": month out of range

标签: mysqlgo

解决方案


你的布局是错误的,它应该是"2006-01-02 15:04:05.000000"。该文档指出:

Parse 解析格式化的字符串并返回它所代表的时间值。布局通过显示参考时间如何定义格式,定义为

2006 年 1 月 2 日星期一 15:04:05 -0700 MST

如果它是值,将被解释;它用作输入格式的示例。然后将对输入字符串进行相同的解释。

package main

import (
    "fmt"
    "time"
)

func main() {

    val := "2018-09-19 18:26:32.000000"
    layout := "2006-01-02 15:04:05.000000"
    t, _ := time.Parse(layout, val)
    fmt.Println(t.Unix()) // prints 1537381592
}

输出

1537381592

在这里试试


推荐阅读