Go를 사용하여 MySQL 데이터베이스에서 시간 값을 검색하려고 하면 "지원되지 않는 드라이버 -> 스캔 쌍' 오류. 이 문제는 DATE 및 DATETIME 값을 time.Time 객체로 자동 변환하지 않는 Go MySQL 드라이버의 기본 동작에서 발생합니다.
이 문제를 해결하려면 MySQL 연결 문자열에 parseTime=true를 추가하세요. 이 매개변수는 드라이버에게 필요한 구문 분석을 수행하도록 지시합니다.
db, err := sql.Open("mysql", "root:@/?parseTime=true") if err != nil { panic(err) } defer db.Close() var myTime time.Time rows, err := db.Query("SELECT current_timestamp()") if rows.Next() { if err = rows.Scan(&myTime); err != nil { panic(err) } } fmt.Println(myTime)
current_timestamp를 사용할 수 없고 current_time을 사용해야 하는 경우 구문 분석을 직접 수행해야 합니다.
type rawTime []byte func (t rawTime) Time() (time.Time, error) { return time.Parse("15:04:05", string(t)) } var myTime rawTime rows, err := db.Query("SELECT current_time()") if rows.Next() { if err = rows.Scan(&myTime); err != nil { panic(err) } } fmt.Println(myTime.Time())
이 사용자 정의 구문 분석은 type은 검색된 바이트 슬라이스를 특정 시간 형식(이 경우 "15:04:05")을 사용하여 time.Time 객체로 변환합니다.
위 내용은 Go에서 MySQL 데이터베이스의 시간을 어떻게 구문 분석하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!