I’ve been trying to compare a date (yyyy-mm-dd
) to sequelize.literal('CURRENT_TIMESTAMP')
as shown below:
dataagendado: { [Op.gte]: sequelize.literal('CURRENT_TIMESTAMP') }
This works for greater than cases but not when the value of dataagendado
is equal to today’s date. I believe I need to format the CURRENT_TIMESTAMP
data. I’ve been trying to find an answer but all I get are formatting for when a column is created, which doesn’t seem to be applicable inside a SELECT query. I’ve also tried sequelize.fn('NOW')
and formatting it but got no luck.
Am I even on the right track? Any help would be greatly appreciated.
Answer
Disclaimer: I’m assuming you are using Postgres as the underlying database. If it’s not the case, please post your database engine.
You are using sequelize.literal('CURRENT_TIMESTAMP')
which resolves in Postgres to NOW()
. The NOW()
function returns the timestamp with the current time. If you are comparing your date without the timestamp against a date with a timestamp that shouldn’t work.
You could use something like this:
dataagendado: { [Op.gte]: sequelize.literal('now()::Date') }
In SQL the following happens:
SELECT NOW()
=> 2021-03-31T07:39:24.518Z
SELECT NOW()::Date
=> 2021-03-31T00:00:00.000Z