为什么date_format(?,'%d-%b-%y')在节点中失败?

时间:2015-07-08 01:27:38

标签: javascript mysql node.js

我正在使用节点来抓取一些数据并将其插入表中

检索到的数据格式为['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而不是按原样传递它。

很想了解这个问题。

不寻找解决方法,我想知道为什么会以这种方式失败。

2 个答案:

答案 0 :(得分:1)

唤醒线程...... 要处理javascript字符串中的%d,必须加倍:'%% d-%b%y'。

答案 1 :(得分:0)

解决方案是安装dateFormat npm模块并使用该工具格式化日期。然后使用MySQL str_to_date是不必要的。

我认为这可能比让SQL处理它容易得多。

我仍然不知道如何防止%d被翻译为sprintf参数。