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.我按照您建议的方式添加了参数。谢谢!”!