#node.js #postgresql #pg-promise
#node.js #postgresql #pg-обещание
Вопрос:
Я немного застрял, пытаясь получить выбор из следующего:
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()]})
Я в основном хочу получить значения, дата-время которых начинается со значения даты в программе
Прямо сейчас я получаю следующую ошибку:
ошибка: оператор не существует: временная метка без часового пояса ~ ~ неизвестно
Комментарии:
1.
LIKE
используется только для строковых значений, а не для дат или временных меток
Ответ №1:
Начнем с того, что вы неправильно используете параметр запроса. Параметр не должен быть заключен в одинарные кавычки.
Затем: если вы хотите иметь дело с датами, тогда используйте функции даты, а не строковые функции, такие как like
.
Я бы сформулировал ваш запрос как:
select balance, datetime
from table
where datetime >= $1::date and datetime < $1::date '1 day'::interval
Ответ №2:
Вероятно, проблема возникает из-за того, что у вас есть информация о времени в виде метки времени, но для этого требуется, чтобы у вас был TIMESTAMPTZ. Если это будет для вас полезно