스캔 쌍: []uint8 -> *time.Time" Go에서 MySQL의 시간을 구문 분석하는 동안 오류가 발생합니까? " /> 스캔 쌍: []uint8 -> *time.Time" Go에서 MySQL의 시간을 구문 분석하는 동안 오류가 발생합니까? " />
MySQL 데이터베이스에서 시간 값을 검색하는 동안 오류가 발생하면 실망스러울 수 있습니다. 이 문서에서는 "지원되지 않는 드라이버 -> 스캔 쌍: []uint8 -> *time.Time"이며 인기 있는 go-sql-driver/mysql 라이브러리를 사용하여 솔루션을 제공합니다.
go-sql-driver/mysql은 자동 구문 분석을 지원합니다. DATE 및 DATETIME 열을 time.Time 값으로 설정하려면 이 기능을 활성화하려면 연결 문자열에 "parseTime=true" 매개변수를 추가하세요. current_timestamp()는 원하는 시간 형식으로 자동으로 매핑됩니다.
자동 구문 분석이 적합하지 않거나 사용할 수 없는 경우(예: current_time() 검색), 사용자 정의 구문 분석 필수입니다.
1단계: 사용자 정의 만들기 Type
원시 바이트 슬라이스([]byte)를 래핑하고 Time() 메서드를 구현하여 시간 값을 time.Time으로 구문 분석하는 사용자 정의 유형을 정의합니다. 예:
type rawTime []byte func (t rawTime) Time() (time.Time, error) { return time.Parse("15:04:05", string(t)) }
2단계: 스캔에서 사용자 정의 유형 사용
스캔 코드에서 직접 참조를 다음으로 바꿉니다. 사용자 정의 유형을 사용하는 time.Time:
var myTime rawTime rows, err = db.Query("SELECT current_time()") if err = rows.Scan(&myTime); err != nil { // Handle error }
3단계: 원시 시간을 구문 분석된 시간으로 변환
마지막으로 사용자 정의 유형에서 Time()을 호출하여 검색합니다. 구문 분석된 시간 값:
fmt.Println(myTime.Time())
위 내용은 Go에서 MySQL의 시간을 구문 분석하는 동안 '지원되지 않는 드라이버 -> 스캔 쌍: []uint8 -> *time.Time' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!