我正在使用节点来抓取一些数据并将其插入表中
检索到的数据格式为['03 -Jan-14',20.18]
我的SQL设置如下:
var sql = "INSERT INTO data (data_date, data_value) VALUES (date_format(?,\'%d-%b-%y\'),?)";
var insert_data = [parsedResults.data_date, parsedResults.data_value];
sql = mysql.format(sql, insert_data);
当我运行脚本时,我得到了这个
INSERT INTO data (data_date, data_value) VALUES (date_format('03-Jan-14','NaN-%b-%y'), 20.18)
我已经完成了谷歌搜索,无法找到原因。
似乎JavaScript正在解释%d而不是按原样传递它。
很想了解这个问题。
不寻找解决方法,我想知道为什么会以这种方式失败。
答案 0 :(得分:1)
唤醒线程...... 要处理javascript字符串中的%d,必须加倍:'%% d-%b%y'。
答案 1 :(得分:0)
解决方案是安装dateFormat npm模块并使用该工具格式化日期。然后使用MySQL str_to_date是不必要的。
我认为这可能比让SQL处理它容易得多。
我仍然不知道如何防止%d被翻译为sprintf参数。