Как я могу хранить только ВРЕМЯ на MySQL с Sequelize - PullRequest
0 голосов
/ 27 января 2020

Как я могу хранить только время в формате ЧЧ: ММ: СС с помощью продолжения? Я пробовал это с Time как String и также как Date Date, но я всегда получаю сообщение об ошибке. это моя функция:

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

"12:00:00" только для целей тестирования.

А это моя модель Sequelize:

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
) 

Заранее благодарен за любые ответы

1 Ответ

1 голос
/ 28 января 2020

Я решил это, добавив набор методов в модель. Я не знаю, почему это работает сейчас, но это работает.

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)
        }
    },
...