我想使用MySql数据库中的 BETWEEN 子句获取数据。
在客户端,我使用JQuery创建了2个内联日历,并使用socket.io发出了选定的日期值;
$('#fromDate').datepicker({
inline: true,
altField: '#d',
dateFormat: "dd-mm-yy",
altFormat: "yy-mm-dd",
monthNames: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],
dayNamesMin: ["Pa", "Pt", "Sl", "Ça", "Pe", "Cu", "Ct"],
firstDay: 1,
numberOfMonths: 1,
onSelect: function(dateText, inst) {
var dateAsString = dateText; //the first parameter of this function
var dateAsObject = $(this).datepicker('getDate'); //the getDate method
console.log(dateAsString);
socket.emit('socketfromDate', $('#d').val());
}
});
$('#toDate').datepicker({
inline: true,
altField: '#x',
dateFormat: "dd-mm-yy",
altFormat: "yy-mm-dd",
monthNames: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],
dayNamesMin: ["Pa", "Pt", "Sl", "Ça", "Pe", "Cu", "Ct"],
firstDay: 1,
numberOfMonths: 1,
onSelect: function(dateText, inst) {
var dateAsString = dateText; //the first parameter of this function
var dateAsObject = $(this).datepicker('getDate'); //the getDate method
console.log(dateAsString);
socket.emit('sockettoDate', $('#x').val());
}
});
在服务器端,如果我在“ fromDate ”值后收到“ toDate ”值,则MySql查询必须在这些天之间获取数据。
var fromDate_query,
toDate_query;
io.on('connection', function(socket) {
socket.on('socketfromDate', function(fromDate) {
console.log();
console.log("----------------------------------");
console.log("Selected dateTime 'from': " + fromDate); //output: Selected dateTime 'from': 2017-07-01
console.log("----------------------------------");
console.log();
fromDate_query = fromDate;
});
socket.on('sockettoDate', function(toDate) {
console.log();
console.log("----------------------------------");
console.log("Selected dateTime 'to': " + toDate); //output: Selected dateTime 'to': 2017-07-13
console.log("----------------------------------");
console.log();
toDate_query = toDate;
connection.query("SELECT * FROM report WHERE date BETWEEN ? AND ?", [fromDate_query, toDate_query], function(err, rows) {
if (err) console.log(err);
else {
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
console.log("**********************************");
console.log("Possible machine: " + row.machine); //output: nothing
console.log("**********************************");
}
}
});
});
});
问题是,没有任何反应。
两天之间查询的最佳方法是什么?
答案 0 :(得分:0)
您的代码中存在三个问题:
使用两个事件单独发送至&amp;从日期开始,您需要两个数据来处理SQL查询。
为什么在使用/时最好使用套接字的http请求来使用套接字。
查询应该在事件内完成,因为这是从客户端发出数据时的数据。
回答你的问题。您必须重构您的代码才能将两个单独的事件移除到一个事件中,这个事件将同时接收您到&amp;从这样的日期开始:
select t.fieadA, 0 AS 'status'
from table AS t
除此之外,只有在选择了两个日期时,您才必须重构前端才能发出事件。
编辑: 奖励积分 - &gt;收到查询数据后,请释放SQL连接