#mysql #sql
#mysql #sql
Вопрос:
Пожалуйста, обратите внимание, что это не мой полный код для запроса. Мне просто нужно понять, как сравнивать только время. Вот мой код создания таблицы
CREATE TABLE IF NOT EXISTS `mydb`.`ActivityBooking` (
`ActivityTime` datetime NOT NULL,
`NumPeople` INT NULL,
`ActivityID` VARCHAR(45) NOT NULL,
`GuideID` VARCHAR(10) NOT NULL,
`Reservation_ReservationID` VARCHAR(10) NOT NULL,
PRIMARY KEY (`ActivityTime`, `ActivityID`),
INDEX `fk_ActivityBooking_Activity1_idx` (`ActivityID` ASC) VISIBLE,
INDEX `fk_ActivityBooking_Staff1_idx` (`GuideID` ASC) VISIBLE,
INDEX `fk_ActivityBooking_Reservation1_idx` (`Reservation_ReservationID` ASC) VISIBLE,
CONSTRAINT `fk_ActivityBooking_Activity1`
FOREIGN KEY (`ActivityID`)
REFERENCES `mydb`.`Activity` (`ActivityID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_ActivityBooking_Staff1`
FOREIGN KEY (`GuideID`)
REFERENCES `mydb`.`Staff` (`StaffID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_ActivityBooking_Reservation1`
FOREIGN KEY (`Reservation_ReservationID`)
REFERENCES `mydb`.`Reservation` (`ReservationID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
Вставка таблицы
Insert into activitybooking values('2020-10-7 15:17:00',6,'C01','S5','R321');
Insert into activitybooking values('2020-12-8 16:15:00',7,'D01','S2','R321');
Insert into activitybooking values('2020-11-9 18:12:00',2,'E01','R321','S4');
В настоящее время я застрял, потому что хочу отображать результаты для бронирований, сделанных после середины дня и до 4 вечера. Но я не знаю, как просто сравнить время с форматом datetime. Я не добавляю коды для других таблиц, чтобы свести информацию к минимуму. Но при необходимости я могу предоставить.
select customerfname, customerlname, activityname
from customer, activitybooking,activity
where activity.activityid = activitybooking.activityid
and activitytime between time('12-0-0') and time('16-0-0');
Ответ №1:
Что вам нужно сделать, это применить TIME
функцию к вашему activitytime
столбцу, а затем сравнить ее с 12:00:00
и 16:00:00
:
TIME(activitytime) BETWEEN '12:00:00' AND '16:00:00'
Обратите внимание, если вы не хотите включать 16:00:00
, замените это на 15:59:59
. Кроме того, если вы записываете временные строки в HH:mm:ss
формате, вам не нужно применять TIME
к ним и можно просто сравнивать напрямую.