如何在 Sequelize/Node JS 中为数据类型 TIME 发送数据
Posted
技术标签:
【中文标题】如何在 Sequelize/Node JS 中为数据类型 TIME 发送数据【英文标题】:How should the data be sent for datatype TIME in Sequelize/ Node JS 【发布时间】:2019-03-27 05:22:10 【问题描述】:我的 mssql 数据库中有一个时间列。我想通过 API 将数据发布到此表,但此字段引发错误 - “从字符串转换日期和/或时间时转换失败”。我将时间字段作为“13:00”之类的字符串发送。通过sequelize从db获取数据时,我得到一个像“1970-01-01T08:00:00.000Z”这样的ISOString,但是db上的数据像“13:00:00”(hh:mm:ss) .我尝试发送“13:00:00”和“1970-01-01T08:00:00.000Z”,似乎都不起作用。
【问题讨论】:
你能发布你的表结构和你的模型定义吗? 【参考方案1】:我用 sequelize 创建了一个简单的 nodejs 应用程序,并且能够成功地为 Time
数据类型插入 13:00
和 13:00:00
。
我检查了Time
和Date
数据类型。
仅当我尝试将13:00
插入Date
数据类型时,我才收到此错误Conversion failed when converting date and/or time from character string
。所以检查你的列的数据类型并确保它是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);
【讨论】:
你可以作为字符串发送,发生的事情是我试图插入 '24:00' 会失败。 那是因为 24:00 实际上是 00:00 postgresql.org/docs/9.0/functions-formatting.html 表 9-22。日期/时间格式的模板模式以上是关于如何在 Sequelize/Node JS 中为数据类型 TIME 发送数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 ORM Sequelize / node.js 操作数据