在VARCHAR(Mysql和node.js)中获取日期之间的数据

在VARCHAR(Mysql和node.js)中获取日期之间的数据,mysql,node.js,Mysql,Node.js,我已经搜索了已经问过的问题,但我无法让它工作。我想做的是获取两个日期之间保存的所有数据(如果它包含相同的电子邮件)。日期保存为字符串(VARCHAR),格式如下:2019年10月15日。我知道使用VARCHAR作为日期数据库是一种不好的做法,但现在我必须使用它 我试过以下方法,但都不管用。对于第一个,我有时会得到一些数据,但不是正确的日期。可能是因为字符串格式 let sql = `SELECT reps FROM reps WHERE email = ? AND date >= ? an

我已经搜索了已经问过的问题,但我无法让它工作。我想做的是获取两个日期之间保存的所有数据(如果它包含相同的电子邮件)。日期保存为字符串(VARCHAR),格式如下:
2019年10月15日
。我知道使用VARCHAR作为日期数据库是一种不好的做法,但现在我必须使用它

我试过以下方法,但都不管用。对于第一个,我有时会得到一些数据,但不是正确的日期。可能是因为字符串格式

let sql = `SELECT reps FROM reps WHERE email = ? AND date >= ? and date <= ? ORDER BY date`;
请注意,问号与node.js一起使用,表示该名称(第一个问号是user,下一个是date1,最后一个是date2):


你知道我做错了什么吗?

如果你试图删除多余的斜杠,我想你在
'%d/%/m/%Y'
中有一个输入错误

尝试使用
“%d/%m/%Y”


希望能有所帮助。

您将日期参数以何种格式传递给查询?字符串形式:“2019年10月15日”如果是,STR_to_date(“%d/%/m/%Y”)和STR_to_date(“%d/%/m/%Y”)之间的STR_to_date(“%d/%/m/%Y”)应该可以工作。我认为可以,但出于某些原因,我只得到一个空数组。.您的回答绝对正确!这是打字错误。现在它工作得很好!我花了很多时间在这个问题上,解决方案就是这么简单。
let sql = `SELECT reps FROM reps WHERE email = ? AND STR_TO_DATE(date, '%d/%/m/%Y') BETWEEN STR_TO_DATE(?, '%d/%/m/%Y') AND STR_TO_DATE(?, '%d/%/m/%Y')`;
connection.query(sql, [user, date1, date2], (error, result) => { ...