【问题标题】:How can I store just the TIME on MySQL with Sequelize如何使用 Sequelize 在 MySQL 上存储 TIME
【发布时间】:2020-01-27 20:59:24
【问题描述】:

如何使用 sequelize 仅存储时间 HH:MM:SS? 我尝试将时间作为字符串和日期对象,但我总是得到一个错误。 这是我的功能:

const dateCollection = await bookingTime.create({
            date: element.date,
            timeFrom: "12:00:00" || element.timeFrom,
            timeTo: element.timeTo
        })

“12:00:00”仅用于测试目的。

这是我的续集模型:

timeFrom: {
        type: DataTypes.TIME,
        allowNull: false,
    },
    timeTo: {
        type: DataTypes.TIME,
        allowNull: false,
    },

我的错误:

"original": {
    "code": "ER_TRUNCATED_WRONG_VALUE",
    "errno": 1292,
    "sqlState": "22007",
    "sqlMessage": "Incorrect date value: 'Invalid date' for column 'date' at row 1",
    "sql": "INSERT INTO `bookingTime` (`id`,`date`,`timeFrom`,`timeTo`) VALUES (DEFAULT,?,?,?);",
    "parameters": [
        "Invalid date",
        "12:00:00",
        "13:00:00"
    ]
},

DDL:

 CREATE TABLE `bookingTime` (
  `id` int(13) NOT NULL AUTO_INCREMENT,
  `date` date DEFAULT NULL,
  `timeFrom` time DEFAULT NULL,
  `timeTo` time DEFAULT NULL,
  `bookingID` int(11) NOT NULL,
  `machineID` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `FKmachineBT_idx` (`machineID`),
  KEY `FKbookingBT_idx` (`bookingID`),
  CONSTRAINT `FKbookingBT` FOREIGN KEY (`bookingID`) REFERENCES `booking` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `FKmachineBT` FOREIGN KEY (`machineID`) REFERENCES `machine` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) 

提前感谢您的任何回答

【问题讨论】:

  • 请提供您遇到的错误
  • 我已经提供了,谢谢
  • 很好!您的“预订时间”表结构也将不胜感激。看起来像您使用日期类型列而不是时间创建的表。在此处查看 MySQL 日期和时间类型:dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html
  • 谢谢,希望对您有所帮助

标签: javascript mysql node.js express sequelize.js


【解决方案1】:

我通过向模型添加集合方法解决了这个问题。我不知道为什么它现在有效,但确实有效。

date: {
        type: DataTypes.DATEONLY(),
        allowNull: false,
        set (valueToBeSet) { 
            this.setDataValue('date', valueToBeSet)
        }
    },
    timeFrom: {
        type: DataTypes.TIME,
        allowNull: false,
        set (valueToBeSet) { 
            this.setDataValue('timeFrom', valueToBeSet)
        }
    },
    timeTo: {
        type: DataTypes.TIME,
        allowNull: false,
        set (valueToBeSet) { 
            this.setDataValue('timeTo', valueToBeSet)
        }
    },

【讨论】:

    猜你喜欢
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    相关资源
    最近更新 更多