首页 > 解决方案 > 如何在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 点之前的预订结果。但我不知道如何比较日期时间格式的时间。我没有添加其他表格的代码,以便将此处的信息保持在最低限度。但是如果需要我可以提供。

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');

标签: mysqlsql

解决方案


您需要做的是将该TIME函数应用于您的activitytime列,然后将其与 and 进行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它们,只需直接比较即可。


推荐阅读