列中save-DATEDIFF的MySql问题
我正在写一个酒店数据库,我有一个关于DATEDIFF func的问题。我有一张表,上面有客人ID、到达日期、出发日期,我希望DATEDIFF(出发、到达)写在同一张表的另一列中。我该怎么做?我尝试创建两个表,但它只运行了一次,当我添加另一个来宾时,每次都会出现主键复制错误 当我创建空列“length”并尝试在此列中保存select时,会显示错误。 代码: 在预订(停留时间)中插入从预订中选择DATEDIFF(出发、到达); 错误: 表: 这是一张有客人的桌子:列中save-DATEDIFF的MySql问题,mysql,mysql-workbench,mysql-error-1064,Mysql,Mysql Workbench,Mysql Error 1064,我正在写一个酒店数据库,我有一个关于DATEDIFF func的问题。我有一张表,上面有客人ID、到达日期、出发日期,我希望DATEDIFF(出发、到达)写在同一张表的另一列中。我该怎么做?我尝试创建两个表,但它只运行了一次,当我添加另一个来宾时,每次都会出现主键复制错误 当我创建空列“length”并尝试在此列中保存select时,会显示错误。 代码: 在预订(停留时间)中插入从预订中选择DATEDIFF(出发、到达); 错误: 表: 这是一张有客人的桌子: CREATE TABLE IF
CREATE TABLE IF NOT EXISTS `input_qt_plus`.`guests` (
`id_guests` INT NOT NULL AUTO_INCREMENT,
`first_name` VARCHAR(45) NOT NULL,
`last_name` VARCHAR(45) NOT NULL,
`email` VARCHAR(45) NOT NULL,
`phone` VARCHAR(45) NOT NULL,
`id_num` VARCHAR(45) NULL,
PRIMARY KEY (`id_guests`))
ENGINE = InnoDB;
这是一张有预订的桌子:
CREATE TABLE IF NOT EXISTS `input_qt_plus`.`reservations` (
`id_res` INT NOT NULL AUTO_INCREMENT,
`guests_id_guests` INT NOT NULL,
`arrival` DATE NOT NULL,
`departure` DATE NOT NULL,
PRIMARY KEY (`id_res`),
INDEX `fk_reservations_guests_idx` (`guests_id_guests` ASC),
CONSTRAINT `fk_reservations_guests`
FOREIGN KEY (`guests_id_guests`)
REFERENCES `input_qt_plus`.`guests` (`id_guests`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
尝试这个查询:希望它能工作
INSERT INTO your_table (field1, field2, arrival, departure, length)
VALUES (value1, value2, arrivalDate, departureDate, DATEDIFF(day,arrivalDate, departureDate))
因为您正在更新同一个表,所以应该引用它两次。 首先将该列添加到表中(假设您将其称为stay_for),然后像这样更新它-
update reservations R
inner join reservations R2
on R2.id_res = R.id_res
set R.stay_for = DATEDIFF(R2.departure, R2.arrival);
请添加表定义以及导致重复键错误的步骤。
update reservations R
inner join reservations R2
on R2.id_res = R.id_res
set R.stay_for = DATEDIFF(R2.departure, R2.arrival);