我需要在22:00:00到02:30:00之间从mysql获取记录。我有班主表
CREATE TABLE `mas_shift` (
`ShiftId` INT(11) NOT NULL AUTO_INCREMENT,
`ShiftName` VARCHAR(100) NULL DEFAULT NULL,
`From_Time` TIME NULL DEFAULT NULL,
`To_Time` TIME NULL DEFAULT NULL,
`In_From_Time` TIME NULL DEFAULT NULL,
`In_To_Time` TIME NULL DEFAULT NULL,
`Out_From_Time` TIME NULL DEFAULT NULL,
`Out_To_Time` TIME NULL DEFAULT NULL,
`IsActive` INT(1) NULL DEFAULT '1',
`ColorCode` VARCHAR(11) NOT NULL DEFAULT 'NULL',
PRIMARY KEY (`ShiftId`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
INSERT INTO `mas_shift` (`ShiftName`, `From_Time`, `To_Time`, `In_From_Time`, `In_To_Time`, `Out_From_Time`, `Out_To_Time`, `IsActive`, `ColorCode`) VALUES ('1st Shift', '08:00:00', '16:00:00', '06:00:00', '11:30:00', '13:00:00', '22:59:00', 1, '#ffee58');
INSERT INTO `mas_shift` (`ShiftName`, `From_Time`, `To_Time`, `In_From_Time`, `In_To_Time`, `Out_From_Time`, `Out_To_Time`, `IsActive`, `ColorCode`) VALUES ('2nd Shift', '16:00:00', '00:00:00', '14:30:00', '20:30:00', '23:00:00', '03:00:00', 1, '#29b6f6 ');
INSERT INTO `mas_shift` (`ShiftName`, `From_Time`, `To_Time`, `In_From_Time`, `In_To_Time`, `Out_From_Time`, `Out_To_Time`, `IsActive`, `ColorCode`) VALUES ('3rd Shift', '00:00:00', '08:00:00', '22:00:00', '02:30:00', '04:00:00', '10:30:00', 1, '#ec407a ');
我需要在ShiftId
和In_From_Time
之间的时间'23:00'获得In_To_Time
;
查询:
SELECT * FROM mas_shift as ms WHERE '23:00:00' BETWEEN ms.In_From_Time AND ms.In_To_Time;
对于上述情况,我需要ShiftId = 3
;但我得到空行。
提前致谢。
答案 0 :(得分:1)
例如,2017-01- 01 23:00:00在2017-01- 01 22:00:00和2017-01- 之间02 02:30:00但是23:00:00不在22:00:00和02:30:00之间,因为这个时间值属于同一天,从00:00:00开始到24:00:00结束!
尝试使用DATETIME or TIMESTAMP数据类型而不是TIME或使用已用时间值。例如,您可以使用26:30:00而不是02:30:00来获得预期结果。