QueryRow.Scan()无法正确读取值?

时间:2019-10-28 03:45:17

标签: postgresql go

我有这样一行: enter image description here

现在,我要检索 checkin_time checkout_time enter image description here

好的,我已经得到了正确的查询。现在通过Go代码运行查询:

package controllers

import (
    "absensi/config"
    "absensi/models"
    "encoding/json"
    "fmt"
    "net/http"
    "time"
)

func DoScanRow(w http.ResponseWriter, r *http.Request) {
    var tmpcheckintime string
    var tmpcheckouttime string
    var param models.CheckinParam
    var db = config.DBConnect()
    json.NewDecoder(r.Body).Decode(&param)

    query1 := `SELECT checkin_time, checkout_time FROM oc_log WHERE userid=$1 AND userdate=$2;`
    row := db.QueryRow(query1, param.UserId, time.Now().Format("2006-01-02"))
    row.Scan(&tmpcheckintime, &tmpcheckouttime)

    fmt.Println("--> id: " + param.UserId)
    fmt.Println("--> date: " + time.Now().Format("2006-01-02"))
    fmt.Println("--> checkin: ", tmpcheckouttime)
    fmt.Println("--> checkout: ", tmpcheckouttime)

}

如果我通过邮递员发送此有效载荷:

  

{“ id”:“ 1234”,“ location”:“(100,100)”,“ distance”:4}

我明白了:

  

-> ID:1234

     

->日期:2019-10-28

     

->签到:

     

->结帐:

签入和签出时间均为空。但是显然只有结帐时间是空的。怎么了?

1 个答案:

答案 0 :(得分:1)

您发布的最后两行代码让您连续两次登录tmpcheckouttime

    fmt.Println("--> checkin: ", tmpcheckouttime)
    fmt.Println("--> checkout: ", tmpcheckouttime)

如果您修复了第一个Println,您会得到期望的结果吗?