#node.js #postgresql #datetime #sequelize.js
#node.js #postgresql #дата и время #sequelize.js
Вопрос:
я использовал базу данных postgresql с типом столбца createdAt в качестве метки времени с часовым поясом.
я хочу отфильтровать записи за текущий месяц
Example.findAndCountAll({ where: { createdAt: [Sequelize.fn("date_trunc", "month", Sequelize.col("createdAt"))] } });
я попробовал приведенный выше код,но он возвращает 0 , даже если записи есть за текущий месяц, я хотел получить записи, которые были сделаны с начала месяца по настоящее время, и это должно динамически работать для каждого месяца .
Заранее спасибо.
Комментарии:
1. Я не эксперт в секвенировании, но где вы проводите месяц и год, за которые хотите получить результат?? Что-то вроде этого должно сработать:
[Op.and]: [ { createdAt: { [Op.gte]: '2021-12-01' } }, { createdAt: { [Op.lte]: '2021-12-31' } }, ]
или попробуйте[Op.between]
вместо[Op.and]
Очевидно, вы можете переключиться'2021-12-31'
на все, что вам нужно.2. Привет , я не прохожу определенный месяц или год..я хотел, чтобы функция получала текущий месяц с новой даты() и сравнивала его с «созданным», чтобы получить результат.. и я хотел , чтобы это происходило каждый месяц, не указывая дату вручную, можете ли вы предложить какой-либо способ сделать «2021-12-01» и «2021-12-31» динамичными? Спасибо.
3. Самый простой способ сделать это-использовать moment.js или day.js библиотека для форматирования даты, например, с помощью day.js первый день месяца
dayjs().date(1).format('yyyy-MM-dd')
и за последний день месяцаdayjs().date(dayjs().daysInMonth()).format('yyyy-MM-dd')
4. Привет, большое тебе спасибо.. это работает