Невозможно преобразовать дату и время только в формат даты - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь получить дату ("jobDate") в формате Date из одной БД (db1) и вставить в другую БД (db2), где Date ("resolvedDate") находится в формате эпохи.Теперь я передаю дату из db1 в запрос на выборку из db2.Чтобы соответствовать их типам данных, я конвертирую time.Time в формат эпохи и перехожу на db2.Я не хочу метку времени, просто формат YYYY-MM-DD.Но проблема здесь в том, что дата эпохи из db2 содержит и дату, и время.В результате, когда я передаю jobDate для выбора запроса, он не может соответствовать ни одной записи в resolvedDate.

Мой код указан ниже:

dsn := "server=********.md3q.***.com;user id=*******;password=******"
db, err := sql.Open("mssql", dsn) 
    if err != nil {
        log.Fatal(err)
    }
err = db.Ping()
    if err != nil {
        log.Fatal(err)
    }
rows,err := db2.Query("select top 1 jobDate from mdesk.dbo.tbl_jobstatus where LastStatus = 'Success' ORDER BY jobDate DESC")
    if err != nil {
        log.Println(err)
    }
defer db.Close()
for rows.Next() {
    err := rows.Scan(&jobDate)
        if err != nil {
            log.Fatal(err)
        }
    log.Println("jobDate",jobDate)  //2013-01-11 00:00:00 +0000 UTC (I'm getting this)
}
    input:= jobDate.Unix()
    jobDate:= input3
    log.Println("EpochDate",jobDate) // 1357948800 this is the epoch format of the above date

dsn1 := "server=*******.ecc4q.******.com; user id=*******; password=*********"
db1, err := sql.Open("mssql", dsn1) 
    if err != nil {
        log.Fatal(err)
    }
err = db1.Ping()
    if err != nil {
        log.Fatal(err)
    }
rows1, err := db1.Query("select Incident_Number, resolvedDate, Corporate_ID from ITSM.dbo.HPD_Help_Desk_Classic where resolvedDate in (?)",jobDate) //main problem is here. 1357948800 is not matching with any entry in this query because all of the entries in resolvedDate are in datetime epoch format whereas I am  trying to search in date epoch format. 
    if err != nil {
        log.Println(err)
    }
defer db.Close()

Может кто-нибудь подсказать, что я делаюнеправильно?

1 Ответ

0 голосов
/ 20 сентября 2018

Если тип даты столбца «resolvedDate» - это DATE, попробуйте преобразовать time.Time в DATE в SQL (см. Ниже).Если «resolvedDate» является int или строкой, то используйте метод time.Format () для его предварительной обработки.

И всегда беспокоитесь о часовых поясах.Если ваша база данных не в формате UTC, вы можете столкнуться с неожиданным поведением.

rows1, err := db1.Query(
  "select Incident_Number, resolvedDate, Corporate_ID from ITSM.dbo.HPD_Help_Desk_Classic " + 
  "where resolvedDate in DATE(?)", // <--- See cast in SQL
  jobDate) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...