GOLANG에서 시간을 구문 분석하는 방법은 SQL과 함께 작동합니다.
10339 단어 parseingdategosqlfirstpost
이 게시물에서는 Golang(time.Time) 및 SQL 연결을 사용하여 현지 시간대를 처리하는 방법에 대해 설명합니다.
문제 :
나는 로그에 대해 createdDate 및 updatedDate와 함께 일부 정보를 포함하는 SQL DB에 데이터를 삽입하기 위한 API를 작성했습니다.
그러나 프런트 엔드에서 날짜를 삽입하면 날짜가 현재 날짜보다 5시간 앞당겨집니다.
솔루션 이전 코드 및 출력:-
SQLConnection.go
func DbConn() (db *sql.DB) {
db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/new_lms")
if err != nil {
panic(err.Error())
}
return db
}
menuInsertDAO.go
//AddMenuService for insert menu
func AddMenuService(menu Menu) error {
fmt.Println("add menu", menu.MenuId)
db := helper.DbConn()
menuDate := time.Now().UTC()
fmt.Println("menuDate", menuDate, reflect.TypeOf(menuDate))
menuData, err := db.Prepare("INSERT INTO mmenus(pkMenuId, menuName, routerLink, description, createdOn,createdBy) VALUES(?,?, ?,?,?,?)")
if err != nil {
panic(err.Error())
}
menuData.Exec(menu.MenuId, menu.MenuName, menu.RouterLink, menu.Description, menuDate, menu.CreatedBy)
return nil
}
산출:
Backend O/P: menuDate 2021-01-04 11:45:12.6202467 +0530 IST m=+165.534486801 time.Time
SQLDB :
이제 솔루션으로 이동합니다.
1) 백엔드에서 일어나는 일 🤔
그것은 "벽시계"와 비슷합니다.
예를 들어 인도인에게 날짜와 시간을 물으면 그는 단순히 2021년 1월 4일 03:08:12라고 대답하고 동시에 다른 나라 사람은 (뉴욕: 2021년 1월 4일)과 같이 다른 시간으로 대답합니다. 04:40:21).
여기서 위치는 표시 목적으로만 사용되며 시간의 실제 값을 변경하지 않습니다. 기본적으로 위치는 시스템의 현지 시간대를 기반으로 합니다.
2)Golang에서 SQL 연결로 이동해 보겠습니다.
Golang에서 SQL 연결을 사용할 때 SQL 데이터베이스의 시간대를 이해해야 합니다.
MySQL은 두 개의 시간대를 사용했습니다.
1)MySQL 서버가 사용할 로컬 시스템의 시간대입니다.
2) 시간대 연결 자체.
SQL 연결:
SQL 연결을 사용하면 값을 구문 분석할 수 있습니다. 우리의 경우time.Now()는 로컬 시스템의 현재 시간을 반환하고 SQL 연결은 이를 전역 시간으로 받아들입니다.
이 문제는 위치별로 날짜를 구문 분석하여 해결됩니다.
db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/new_lms?parseTime=true&loc=Asia%2FCalcutta")
참고:- %2F: '/'는 %2F로 대체됩니다.
menuInsertDAO.go
//AddMenuService for insert menu
func AddMenuService(menu Menu) error {
fmt.Println("add menu", menu.MenuId)
db := helper.DbConn()
menuDate := time.Now().UTC()
fmt.Println("menuDate", menuDate, reflect.TypeOf(menuDate))
menuData, err := db.Prepare("INSERT INTO mmenus(pkMenuId, menuName, routerLink, description, createdOn,createdBy) VALUES(?,?, ?,?,?,?)")
if err != nil {
panic(err.Error())
// return err
}
menuData.Exec(menu.MenuId, menu.MenuName, menu.RouterLink, menu.Description, menuDate, menu.CreatedBy)
return nil
}
After parsing the time the output is:-
Back-end :
menuDate 2021-01-04 15:50:02.2094272 +0530 IST m=+58.177726101 time.Time
SQLDB:
이것은 내 첫 번째 게시물이며 다른 솔루션과 제안을 수락합니다.
읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(GOLANG에서 시간을 구문 분석하는 방법은 SQL과 함께 작동합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rahulkarmore/how-to-parse-time-of-time-time-in-golang-work-with-sql-db-in텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)