Golang:如何验证 MySQL 时间戳字符串

我们如何检查被认为是 MySQL TIMESTAMP 的字符串实际上是否有效?使用的格式是:

YYYY-MM-DD HH:MM:SS[.fraction] 其中“分数”有 3 位数字。

例如2016-03-28 12:17:30.022应该是有效的。最好我想避免使用正则表达式,time.Parse()但欢迎任何其他建议。


陪伴而非守候
浏览 218回答 3
3回答

慕标琳琳

在时间字符串上使用布局字符串(例如“2006-01-02 15:04:05.999”)调用 time.Parse。如果这导致有效的 time.Time 值并且没有错误,那么您的字符串应该在数据库中工作。timeStamp, err := time.Parse("2006-01-02 15:04:05.999", yourTimeString)    if err != nil {        // do something with err...    }// do something with timeStamp...我不使用 MySQL,但在 PostgreSQL 和 Go 之间你可以传递时间戳和时间。时间值而不转换为字符串......所以也许这可以简化你的问题。使用 time.Parse 在 Go 中转换字符串,然后将 time.Time 值写入数据库。

不负相思意

您可以使用TIMESTAMP()将字符串转换为timestamp. 如果它可以转换为有效的时间戳,则它是有效的。如果转换为NULL,则它不是空时间戳字符串。利用:TIMESTAMP('2016-03-28 12:17:30.022') IS NOT NULL演示mysql> select TIMESTAMP('2016-03-28 12:17:30.022'), TIMESTAMP('2016-03-28 12:17:300.022');+--------------------------------------+---------------------------------------+| TIMESTAMP('2016-03-28 12:17:30.022') | TIMESTAMP('2016-03-28 12:17:300.022') |+--------------------------------------+---------------------------------------+| 2016-03-28 12:17:30.022              | NULL                                  |+--------------------------------------+---------------------------------------+1 row in set, 1 warning (0.00 sec)mysql> select TIMESTAMP('2016-03-28 12:17:30.022') IS NOT NULL, TIMESTAMP('2016-03-28 12:17:300.022') IS NOT NULL;+--------------------------------------------------+---------------------------------------------------+| TIMESTAMP('2016-03-28 12:17:30.022') IS NOT NULL | TIMESTAMP('2016-03-28 12:17:300.022') IS NOT NULL |+--------------------------------------------------+---------------------------------------------------+|                                                1 |                                                 0 |+--------------------------------------------------+---------------------------------------------------+1 row in set, 1 warning (0.00 sec)

慕运维8079593

一种解决方案是使用布局字符串和 time.Parse()package mainimport (  "fmt"  "time")func main() {  timestamp    := "2016-03-28 11:50:50.476"  const layout  = "2006-01-02 03:04:05.999"  _, error := time.Parse(layout, timestamp)  if error != nil {    fmt.Println(error)  } else {    fmt.Println("valid!")  }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go