Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么日期格式(?,';%d-%b-%y';)在节点中失败?_Javascript_Mysql_Node.js - Fatal编程技术网

Javascript 为什么日期格式(?,';%d-%b-%y';)在节点中失败?

Javascript 为什么日期格式(?,';%d-%b-%y';)在节点中失败?,javascript,mysql,node.js,Javascript,Mysql,Node.js,我使用node刮取一些数据并将其插入表中 检索到的数据格式为['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, i

我使用node刮取一些数据并将其插入表中 检索到的数据格式为['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,而不是按原样传递它。 我想了解一下这个问题。
我不想寻找解决办法,我想知道为什么这样做会失败。

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

我认为这可能比让SQL来处理要容易得多

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

唤醒线程。。。
若要处理javascript字符串中的%d,必须将其加倍:“%d-%b%y”。

一旦解决了该特定问题(看起来
%d
被解释为
printf
-样式的十进制)。。。MySQL
DATE\u FORMAT
函数需要一个有效的
DATE
值作为第一个参数。如果
data\u date
列是datatype
date
,我想您应该使用-,它是
date\u格式的倒数。FWIW
\
中的反斜杠是不必要的,因为您的SQL字符串包含在双引号中,所以只要
'
就可以了。另外,我刚刚用
mysql
模块测试了您的代码(2.7.0)我无法重现您描述的问题。str_to_date当然是对的。我知道date_格式是错误的,我被跟踪了,忘了检查要使用的正确函数。现在剩下的问题是为什么要解释%d?您的测试代码@msdex是什么?多年后,有人有解决方案吗?我没有他遇到了完全相同的问题!%d正在被转换为NaN!您是否尝试使用“%$d”?是的,部分工作正常,但格式发送方式错误。当我选择“日”粒度时,我将“%Y-%m-%d”作为格式参数传递(用于报告,粒度为日、月、年),并且SQL应返回日期和值,日期格式将作为“2020-10-%d”返回“这真的很奇怪。当使用MySQL Workbench example.Hmm直接在数据库上执行时,从日志中生成的SQL返回正确的值。我放弃了在MySQL中执行SQL,而是使用JavaScript来处理格式化,一切都变得简单多了。