且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

[Javascript] requesterror:':'附近的语法不正确

更新时间:2023-11-07 22:46:10

对不起,我刚刚找到了办法。



我很奇怪为什么会这样那: -



 msg.query =   INSERT INTO dbo.Power([dt_Date],[dt_Time])VALUES(' + curr_date +  ',' + curr_time +  ') 


Hi all,

I'm having a little confuse here. I'm writing code in Node-RED for saving data into MSSQL. Other data successfully save except "TIME".

I set dt_Time in MSSQL with "time(7)" and when I make the default value to (GETDATE()) it will appear e.g. "13:52:06.0030000"

I have tried several things (REFER TO WHAT I HAVE TRIED) as searching from a web but still giving a same error.
Please find my script:-

//FUNCTION START HERE
function addZero(x,n) {
    while (x.toString().length < n) {
        if (n < 3){
        x = "0" + x;
        }else{
            x = x + "0";
        }
    }
    return x;
}
//DATE START HERE
var now = new Date();
var year    = now.getFullYear();
var month   = addZero(now.getMonth()+1,2); 
var day     = addZero(now.getDate(),2);
//TIME START HERE
var hour    = addZero(now.getHours(),2);
var minute  = addZero(now.getMinutes(),2);
var second  = addZero(now.getSeconds(),2);
var millisec  = addZero(now.getMilliseconds(),3); 

//THIS SECTION WILL SEND TO FLOW 1 : SQL SERVER
var curr_date = now.toLocaleDateString();
var curr_time =  + hour + ':' + minute + ':' + second + '.' + millisec ;

msg.query = "INSERT INTO  dbo.Testing (dt_Date,dt_Time) VALUES(" + curr_date + "," + curr_time + ")";



ADDITIONAL:-
Now I'm having another error when filtering to test saving data for date and time only

msg.query = "INSERT INTO  dbo.Testing (dt_Date,dt_Time) VALUES(" + curr_date + "," + curr_time + ")";



Error:

RequestError: Operand type ***: int is incompatible with date



What I have tried:

Approach 1:
var curr_time = + hour + ':' + minute + ':' + second + '.' + millisec ;

Approach 2:
var curr_time = + hour + ':' + minute + ':' + second + ':' + millisec ;

Approach 3:
var curr_time = + hour + ':' + minute + ':' + second ;

Approach 4:
var curr_time = + hour + ':' + minute + ':' + second + millisec ;

Approach 5:
var curr_time = now.toLocaleTimeString();

Sorry, I just found the way to do it.

I was weird why it be like that:-

msg.query = "INSERT INTO  dbo.Power ([dt_Date],[dt_Time]) VALUES('" + curr_date + "','" + curr_time + "')";