Go에서 MySQL의 시간을 구문 분석하는 동안 '지원되지 않는 드라이버 -> 스캔 쌍: []uint8 -> *time.Time' 오류를 해결하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-10 14:52:02
원래의
357명이 탐색했습니다.

How to Solve 스캔 쌍: []uint8 -> *time.Time" Go에서 MySQL의 시간을 구문 분석하는 동안 오류가 발생합니까? " /> 스캔 쌍: []uint8 -> *time.Time" Go에서 MySQL의 시간을 구문 분석하는 동안 오류가 발생합니까? " />

Go에서 데이터베이스의 시간 구문 분석을 처리하는 방법

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿