Это моя dotable на MySQL база данных:
+--------------+------------+----------+
| sID | sDate | sHour |
+--------------+------------+----------+
| 1440190025 | 2019-05-08 | 02:46:01 |
| 1440190019 | 2019-05-07 | 16:06:01 |
| 1440190017 | 2019-05-07 | 12:59:02 |
| 1440190013 | 2019-05-07 | 10:56:14 |
+--------------+------------+----------+
Мне нужно выбрать на этом dotable все строки, включенные в это времяслот:
18:00:00-00:00:00
с уменьшением на три часа времени начала ( -3 часа на 18: 00: 00 ) и добавлением трех часов к последнему часу ( + 3)часы в 00: 00: 00 ):
-3 18:00:00 >>> 15:00:00
+3 00:00:00 >>> 03:00:00
Я пробовал этот запрос SQL:
mysql> SELECT
sID,
sDate,
sHour
FROM
dotable
WHERE
sHour BETWEEN ADDTIME(
SUBSTRING_INDEX('18:00:00-00:00:00', '-', 1) ,- 30000
)
AND ADDTIME(
SUBSTRING_INDEX('18:00:00-00:00:00', '-', - 1),
30000
);
+------------+------------+----------+
| sID | sDate | sHour |
+------------+------------+----------+
| 1440190019 | 2019-05-07 | 16:06:01 |
+------------+------------+----------+
1 row in set
mysql>
Этот вывод не показывает sID счисло 1440190025 , хотя значение sHour включено во время слота 15: 00: 00 - 03: 00: 00 .
Делать кому-либоесть идеи почему?
мой код ниже.
DROP TABLE IF EXISTS `dotable`;
CREATE TABLE `dotable` (
`sID` int(10) NOT NULL AUTO_INCREMENT,
`sDate` date DEFAULT NULL,
`sHour` varchar(255) DEFAULT NULL,
PRIMARY KEY (`sID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- ----------------------------
-- Records of dotable
-- ----------------------------
INSERT INTO `dotable` VALUES ('1440190013', '2019-05-07', '10:56:14');
INSERT INTO `dotable` VALUES ('1440190017', '2019-05-07', '12:59:02');
INSERT INTO `dotable` VALUES ('1440190019', '2019-05-07', '16:06:01');
INSERT INTO `dotable` VALUES ('1440190025', '2019-05-08', '02:46:01');