如何在Sequelize / Node JS中发送数据类型为TIME的数据

时间:2018-10-23 04:18:34

标签: node.js sql-server sequelize.js

我的mssql数据库中有一个时间列。我想通过API将数据发布到此表,但是此字段引发错误-“从字符串转换日期和/或时间时转换失败”。我将时间字段作为字符串发送,例如“ 13:00”。当通过sequelize从数据库获取数据时,我得到的是ISOString,例如“ 1970-01-01T08:00:00.000Z”,但是数据库上的数据就像“ 13:00:00”(hh:mm:ss) 。我尝试发送“ 13:00:00”和“ 1970-01-01T08:00:00.000Z”,两者似乎都无效。

1 个答案:

答案 0 :(得分:1)

我创建了一个简单的带有sequelize的nodejs应用,并且能够成功插入13:00数据类型的13:00:00Time

我已经检查了TimeDate数据类型。 仅当我尝试将Conversion failed when converting date and/or time from character string插入到13:00数据类型中时,才出现此错误Date。因此,请检查您列的数据类型,并确保它是Time而不是Date

请参考此代码,并检查您在哪里出错了。

var http = require('http');
const Sequelize = require('sequelize');
const sequelize = new Sequelize('DBName', 'UserName', 'Password', {
  host: 'localhost',  
  port:12672,
  dialect: 'mssql',
  options:{
    encrypt:false,
    instancename: 'SQLEXPRESS'
  }
});



const User2 = sequelize.define('user2', {
  name: {
    type: Sequelize.STRING
  },
  DateTimeCol: {
    type: Sequelize.DATE
  },
  TimeCol: {
    type: Sequelize.TIME
  }
});

User2.sync().then(() => {
   User2.create({
    name: 'Rahul',
    DateTimeCol: '2018-01-01T08:00:00.000Z',
    TimeCol: '13:00'
  });
  User2.findAll().then(data => console.log(data));
});


var server = http.createServer(function(req, res) {
res.writeHead(200);
res.end();
});
server.listen(8080);