【问题标题】:pg-promise , how to select with a where ... like date%pg-promise ,如何选择 where ... like date%
【发布时间】:2020-12-13 10:44:51
【问题描述】:

我在尝试选择以下内容时有点卡住了:

id(int)  balance(int)  datetime(timestamp without timezone)
7        153           "2020-08-24 20:15:49"
8        115           "2020-08-24 20:16:13"
9        105           "2020-08-24 20:17:14"

我想选择这样做

let date = moment().format("YYYY-MM-DD")
console.log(date) // 2020-08-24
let selectAddressSnapshotByDate = new PQ({text: "SELECT balance, datetime FROM table where datetime like '$1%' ", values: [date.toString()]})

我基本上想获取日期时间以程序的日期值开头的值

现在我收到以下错误:

错误:运算符不存在:没有时区的时间戳~~未知

【问题讨论】:

  • LIKE 仅适用于字符串值,不适用于日期或时间戳

标签: node.js postgresql pg-promise


【解决方案1】:

首先,您没有正确使用查询参数。参数不应用单引号括起来。

那么:如果要处理日期,那就使用日期函数,而不是like之类的字符串函数。

我会将您的查询表述为:

select balance, datetime 
from table 
where datetime >= $1::date and datetime < $1::date + '1 day'::interval

【讨论】:

    【解决方案2】:

    可能会出现问题,因为您有 TIMESTAMP 形式的时间信息,但它要求您有 TIMESTAMPTZ。如果对你有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-18
      • 2021-09-14
      • 2011-05-12
      • 1970-01-01
      • 2018-03-19
      • 1970-01-01
      • 2021-11-23
      • 2022-01-09
      相关资源
      最近更新 更多