..." 오류와 같이 MySQL에서 시간 데이터를 가져오는 데 문제가 발생할 수 있습니다."/> ..." 오류와 같이 MySQL에서 시간 데이터를 가져오는 데 문제가 발생할 수 있습니다.">

>백엔드 개발 >Golang >Golang에서 MySQL 시간 데이터를 구문 분석하는 방법은 무엇입니까?

Golang에서 MySQL 시간 데이터를 구문 분석하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-21 05:29:141034검색

How to Parse MySQL Time Data in Golang?

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.