postgresql - QueryRow.Scan() 不能正确读取值?

标签 postgresql go

我有一排这样的:
enter image description here

现在我想检索 签到时间结帐时间 :
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)

}

如果我通过 Postman 发送此有效负载:

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



我明白了:

--> id: 1234

--> date: 2019-10-28

--> checkin:

--> checkout:



入住和退房时间都是空的。然而显然只有结账时间是空的。这里有什么问题?

最佳答案

您发布的最后两行代码记录了 tmpcheckouttime连续两次:

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

如果您修复第一个 Println ,你得到你所期望的吗?

关于postgresql - QueryRow.Scan() 不能正确读取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58585557/

相关文章:

sql - WHERE 和 AND 子句不返回值

postgresql - 另一组点的半径内的点数

go - []struct 中附加的不需要的类型

Go WASM 导出功能

html - Golang HTML Web Apps 中没有这样的模板 "xxx"

go - 如何将巨大的 csv 数据(4GB)转储到 mysql 中

arrays - 如何按特定顺序连接 JSON 数组的两个值?

sql - 在单个 SQL 语句中按行进行 IN BETWEEN 比较

hibernate - JPA @Lob 属性编码不适用于 PostgreSQL 文本

mysql - sql.DB.Query "expected 0 arguments"使用 "?"占位符时