2017-10-01 1 views
1

je dois effectuer une requête à un modèle qui a datetime colonnes enregistré un caractère variable ici est ma requêteConvertir colonne varchar à ce jour dans Sequelize

const _from = new Date(from).getTime(); 
Model.findAll({where: Sequelize.where(Sequelize.fn('datetime', Sequelize.col('start')), '>=', _from)}) 

avec la requête ci-dessus ceci est la réponse: function datetime(character varying) does not exist

je aussi essayer les suivantes:

const _from = new Date(from); 
Model.findAll({where: Sequelize.where(Sequelize.fn('date', Sequelize.col('start')), '>=', from)}) 

et avec la requête ci-dessus c'est la réponse: date/time field value out of range: 1495828800000

ceci est une capture d'écran des colonnes du tableau, j'utilise Postgress et Sequelize dans NodeJS:

enter image description here

Répondre

0

Essayez ce code:

Pour sequelize> = 4.12.0

const Op = Sequelize.Op; 
const _from = new Date(from).getTime(); 
Model.findAll({where: { start : {[Op.gte]: _from}}) 

Pour sequelize < 4.12.0:

const _from = new Date(from).getTime(); 
Model.findAll({where: { start : {$gte: _from}}) 

Juste par curiosité, pourquoi vous stockez une date dans un VARCHAR?

+0

Quelle version utilise Sequelize.Op? Si j'essaie d'obtenir la propriété 'Impossible de lire la propriété' untefined' car 'Op' n'est pas défini, j'utilise la version 3.23, le type de données Varchar pour les dates était comme ça avant que j'essaie de faire quelque chose. –