Golang의 MySQL 시간 구문 분석
Golang에서는 "지원되지 않는 드라이버" 오류와 같이 MySQL에서 시간 데이터를 가져오는 것이 문제가 될 수 있습니다. -> 아래 코드 조각을 사용하는 경우: []uint8 -> *time.Time":
var my_time time.Time rows, err := db.Query("SELECT current_time FROM table") err := rows.Scan(&my_time)
이 문제를 해결하려면 go-sql-driver/mysql 드라이버 사용을 고려하세요. DATE 및 DATETIME 데이터 유형을 time.Time으로 자동 변환하는 옵션을 제공합니다. 이는 아래 설명된 것처럼 연결 문자열에parseTime=true를 추가하여 달성할 수 있습니다.
db, err := sql.Open("mysql", "root:@/?parseTime=true")
그러나 특별히 current_time(current_timestamp가 아닌)이 필요한 경우 시간 데이터를 수동으로 구문 분석해야 합니다. 이를 달성하기 위한 두 가지 접근 방식은 다음과 같습니다.
사용자 정의 시간 구문 분석 유형
[]바이트 슬라이스를 캡슐화하고 Time()을 제공하는 사용자 정의 유형인 rawTime을 만듭니다. 시간 구문 분석 방법:
type rawTime []byte func (t rawTime) Time() (time.Time, error) { return time.Parse("15:04:05", string(t)) }
스캐닝 코드에서 rawTime을 사용하여 current_time을 자동으로 구문 분석합니다.
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())
수동 시간 구문 분석
사용자 정의 유형에 의존하는 대신 시간 데이터를 수동으로 구문 분석할 수 있습니다.
var myTime string rows, err := db.Query("SELECT current_time()") if rows.Next() { if err = rows.Scan(&myTime); err != nil { panic(err) } } parsedTime, err := time.Parse("15:04:05", myTime) if err != nil { panic(err) } fmt.Println(parsedTime)
위 내용은 Golang에서 MySQL 시간 데이터를 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!