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 值寫入數據庫。

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)

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!")
}
}
- 3 回答
- 0 關注
- 208 瀏覽
添加回答
舉報