将 SQL 日期列与日期进行比较
Compare SQL date column with date
假设我将日期列值插入为
TO_DATE('06/08/2021', 'DD/MM/YYYY')
我想在 Golang 中将此列 valid_till
与
进行比较
_err := database.GetDbReadClient().Raw("SELECT * from base_configs WHERE tenant = ? AND valid_till <= ?", tenant, time.Now()).Scan(&baseConfig).Error
time.Now()
将不起作用。但我不知道如何比较日期。
我在 Postgres 中的插入是否正确?
如果是这样,我可以写什么来代替 time.Now 来与 valid_till
列进行比较?
您可以将参数转换为原始 SQL 中的 date
类型。
raw := `SELECT * FROM base_configs
WHERE tenant = ?
AND valid_till <= ?::date`
err := database.GetDbReadClient().Raw(raw, tenant, time.Now()).Scan(&baseConfig).Error
或者只是将 time.Time
实例格式化为日期 string
。
raw := `SELECT * FROM base_configs
WHERE tenant = ?
AND valid_till <= ?`
date := time.Now().Format("02/01/2006")
err := database.GetDbReadClient().Raw(raw, tenant, date).Scan(&baseConfig).Error
假设我将日期列值插入为
TO_DATE('06/08/2021', 'DD/MM/YYYY')
我想在 Golang 中将此列 valid_till
与
_err := database.GetDbReadClient().Raw("SELECT * from base_configs WHERE tenant = ? AND valid_till <= ?", tenant, time.Now()).Scan(&baseConfig).Error
time.Now()
将不起作用。但我不知道如何比较日期。
我在 Postgres 中的插入是否正确?
如果是这样,我可以写什么来代替 time.Now 来与 valid_till
列进行比较?
您可以将参数转换为原始 SQL 中的 date
类型。
raw := `SELECT * FROM base_configs
WHERE tenant = ?
AND valid_till <= ?::date`
err := database.GetDbReadClient().Raw(raw, tenant, time.Now()).Scan(&baseConfig).Error
或者只是将 time.Time
实例格式化为日期 string
。
raw := `SELECT * FROM base_configs
WHERE tenant = ?
AND valid_till <= ?`
date := time.Now().Format("02/01/2006")
err := database.GetDbReadClient().Raw(raw, tenant, date).Scan(&baseConfig).Error