Node.js 插入或更新日期字段时出现以下错误从字符串转换日期和/或时间时,转换失败

Node.js 插入或更新日期字段时出现以下错误从字符串转换日期和/或时间时,转换失败,node.js,sequelize.js,tedious,sequelize-typescript,Node.js,Sequelize.js,Tedious,Sequelize Typescript,我试图在表中更新/插入日期时间戳值,我得到“从字符串转换日期和/或时间时转换失败”: return UserTableDto.update({ 'firstName': user.firstName, 'lastName': user.lastName, 'LastUpdatedBy': user.lastUpdatedBy, 'LastUpdatedOn': new Date() }).then((userDtoResult: U

我试图在表中更新/插入日期时间戳值,我得到“从字符串转换日期和/或时间时转换失败”:

    return UserTableDto.update({
      'firstName': user.firstName,
      'lastName': user.lastName,
      'LastUpdatedBy': user.lastUpdatedBy,
      'LastUpdatedOn': new Date()
    }).then((userDtoResult: UserDto) => {
      resolve(userDtoResult);
    });
用户模型: 我尝试使用new Date().toISOString()、new Date().toutstring()、new Date().getTime(),但仍然出现相同的错误

环境:
  • 续集版本:5.19.0
  • Node.js版本:v8.16.0
  • 操作系统:Windows 10 64位
  • 打字稿版本:3.3.3333
  • 续集类型脚本:1.0.0
  • 乏味:6.3.0

使用sequelize创建了一个问题:

我已通过以下方式解决了我的问题:


    return UserTableDto.update({
      'firstName': user.firstName,
      'lastName': user.lastName,
      'LastUpdatedBy': user.lastUpdatedBy,
      'LastUpdatedOn': Sequelize.fn('GETDATE')
    }).then((userDtoResult: UserDto) => {
      resolve(userDtoResult);
    });

将输出以下查询:

UPDATE [UAM_User] SET [LastUpdatedOn]=GETDATE() OUTPUT INSERTED.* WHERE [userId] = @0
这将适用于SQL server。如果使用Oracle或某些db,请使用生成日期的函数。例如,在MySQL中,获取当前时间的函数为NOW(),因此该函数为:

'LastUpdatedOn': Sequelize.fn('GETDATE')
或者需要将对象类型从日期更改为字符串,并以“yyyy-MM-dd HH:MM:ss.SSSSSS”格式传递格式化的日期值:

然后将值传递到此列需要传递格式化的日期值:


    const d = new Date();
    const dt = `${d.getFullYear()}-${d.getUTCMonth() + 1}-${d.getDate()} ${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}.${d.getMilliseconds()}`;

    return UserTableDto.update({
      'firstName': user.firstName,
      'lastName': user.lastName,
      'LastUpdatedBy': user.lastUpdatedBy,
      'LastUpdatedOn': dt
    }).then((userDtoResult: UserDto) => {
      resolve(userDtoResult);
    });


我已通过以下方式解决了我的问题:


    return UserTableDto.update({
      'firstName': user.firstName,
      'lastName': user.lastName,
      'LastUpdatedBy': user.lastUpdatedBy,
      'LastUpdatedOn': Sequelize.fn('GETDATE')
    }).then((userDtoResult: UserDto) => {
      resolve(userDtoResult);
    });

将输出以下查询:

UPDATE [UAM_User] SET [LastUpdatedOn]=GETDATE() OUTPUT INSERTED.* WHERE [userId] = @0
这将适用于SQL server。如果使用Oracle或某些db,请使用生成日期的函数。例如,在MySQL中,获取当前时间的函数为NOW(),因此该函数为:

'LastUpdatedOn': Sequelize.fn('GETDATE')
或者需要将对象类型从日期更改为字符串,并以“yyyy-MM-dd HH:MM:ss.SSSSSS”格式传递格式化的日期值:

然后将值传递到此列需要传递格式化的日期值:


    const d = new Date();
    const dt = `${d.getFullYear()}-${d.getUTCMonth() + 1}-${d.getDate()} ${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}.${d.getMilliseconds()}`;

    return UserTableDto.update({
      'firstName': user.firstName,
      'lastName': user.lastName,
      'LastUpdatedBy': user.lastUpdatedBy,
      'LastUpdatedOn': dt
    }).then((userDtoResult: UserDto) => {
      resolve(userDtoResult);
    });