Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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
Node.js更新MySql时间戳_Mysql_Node.js - Fatal编程技术网

Node.js更新MySql时间戳

Node.js更新MySql时间戳,mysql,node.js,Mysql,Node.js,所以我做了一个简单的查询,如下所示: connection.query("UPDATE workers SET timestamp='"+thedate+"' WHERE id = " + id,function(err,upres){ connection.release(); if(!err) { console.log('updated record') console.log(upres); } }) console.log显示的数据格

所以我做了一个简单的查询,如下所示:

connection.query("UPDATE workers SET timestamp='"+thedate+"' WHERE id = " + id,function(err,upres){
    connection.release();
    if(!err) {
      console.log('updated record')
      console.log(upres);
    }

})
console.log显示的数据格式为:2015-04-02 19:29:14

如果我调试SQL语句,结果是:

UPDATE workers SET timestamp='2015-04-02 21:31:16' WHERE id = 3;
但是,当我列出数据时,输出是:

[{"id":3,"worker":"John Doe","timestamp":"2015-04-01T22:00:00.000Z","duration":30}]
与报告的时间相比,这是一个很大的差距


这是什么原因造成的?

您不知道MySQL是如何将您的VARCHAR转换为日期的。有很多配置选项。最好使用
STR_to_DATE
函数绕过所有假设。这里是一个链接到的文件

作为补充说明,我强烈建议使用预处理语句作为保护应用程序免受错误和sql注入的方法

编辑:

关于您的问题,列可以是
DATETIME
,但您分配的值是
VARCHAR

'更新工人集时间戳=?其中id=?',[4/2/2015 3:00:00 PM',3'],[callBackFunction]

根据您所说的转换不起作用,我怀疑timestamp列的数据类型

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE NAME = 'workers'

这样的声明应该会提供有关该列的所有信息。如果您有访问权限,也可以在GUI中找到它。MySQL中有三种不同的日期类型date、datetime或timestamp。这很可能是一个无法保存时间的日期列。

时间戳字段是一个日期字段,而不是VARCHAR?如何使用准备好的语句?如果这样做:将dab_质询集timestamp=STR_更新为_DATE(“+mysql+”,“%d%b%Y%T:%f”),其中id=“+id然后时间被重置为00:00:00也不是这样:更新dab_挑战集timestamp=DATE_格式(现在(),'%b%d%Y%h:%i%p'),其中id=“+id输出仍然是00:00:00这是两者的组合:1.这是一个日期字段2.我按照您建议的方式添加了参数。谢谢!”!