prior question 的重复答案:
to_char(CURRENT_DATE,'dd') 为您提供月份中的某一天,但更简单的是使用DAYOFMONTH,因此第一行可以变成:
if( DAYOFMONTH(CURRENT_DATE) == 5 ) {
...
}
或者你可以使用DATE_PART(day, CURRENT_DATE) == 5
您的 StoredProc 调用可以分开来看看什么是有意义的和不喜欢的:
var parm1 = '`+ID+`'::VARCHAR;
var parm2 = CURRENT_TIMESTAMP()::TIMESTAMP_NTZ::VARCHAR;
var json_str = '{"name": "`+name+`","task_name": "`+task_name+`","sp": "STG.BISON_LAND_DATA","up_date": "`+upd_date+`","date": "`+date+`","id": "`+ID+`"}'::VARCHAR;
CALL STG.BISON_LAND_DATA(parm1, parm2, json_str);
在所示代码的上下文中,使用所有三种引号样式是没有意义的,因为我们以 ' 引号开始字符串,要打破它们以进行字符串连接,您可以只使用普通的单引号再次引用。
var json_str = '{"name": "'+ name +'","task_name": "'+ task_name +'","sp": "STG.BISON_LAND_DATA","up_date": "'+ upd_date +'","date": "'+ date +'","id": "'+ ID +'"}'::VARCHAR;
parm1 只是一个 toString() 因此可能是
var parm1 = ID.toString();
json_str 是一个代表 json 对象的字符串,假设你在 JavaScript 中,你可以只创建对象,然后 toString() 那个.. 这样就变成了:
if( DAYOFMONTH( CURRENT_DATE ) == 5 ) {
var parm1 = ID.toString();
var parm2 = CURRENT_TIMESTAMP()::TIMESTAMP_NTZ::VARCHAR;
var json_obj = {name: name, task_name: task_name, sp: "STG.BISON_LAND_DATA", up_date: upd_date, date: date, id: ID };
CALL STG.BISON_LAND_DATA(parm1, parm2, json_obj.toString());
}