亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang:如何驗證 MySQL 時間戳字符串

Golang:如何驗證 MySQL 時間戳字符串

Go
陪伴而非守候 2021-12-27 18:04:42
我們如何檢查被認為是 MySQL TIMESTAMP 的字符串實際上是否有效?使用的格式是:YYYY-MM-DD HH:MM:SS[.fraction] 其中“分數”有 3 位數字。例如2016-03-28 12:17:30.022應該是有效的。最好我想避免使用正則表達式,time.Parse()但歡迎任何其他建議。
查看完整描述

3 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

在時間字符串上使用布局字符串(例如“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 值寫入數據庫。


查看完整回答
反對 回復 2021-12-27
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

您可以使用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)


查看完整回答
反對 回復 2021-12-27
?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

一種解決方案是使用布局字符串和 time.Parse()


package main


import (

  "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!")

  }

}


查看完整回答
反對 回復 2021-12-27
  • 3 回答
  • 0 關注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號