【问题标题】:Mysql select current time between two columnsMysql在两列之间选择当前时间
【发布时间】:2021-03-22 17:03:16
【问题描述】:

我有一个日程表,其中有两列 time_fromtime_to,其值采用 24 小时格式,例如 from 和 to 是晚上 9 点到凌晨 1 点,而不是 time_from 和 time_to 分别为 21 和 1 .

现在我需要检查当前时间是否在这两列之间

如果现在时间是晚上 11 点,我应该得到在晚上 11 点之间的列值是 23 和 1 的列

CREATE TABLE `ace_rp_inventory_locations_night` (
 `id` int(11)  NOT NULL,
 `name` varchar(255) DEFAULT NULL,
 `time_from` varchar(255) DEFAULT NULL,
 `time_to` varchar(255) DEFAULT NULL
 ); 
 
INSERT INTO ace_rp_inventory_locations_night (id, name, time_from, time_to)
VALUES (1, 'test', '23','1'); 

please check sql fiddle

这个查询有效

SELECT *
FROM `ace_rp_inventory_locations_night`
WHERE time_from_1 <= '23'
AND time_to_1 >= '23'

如果时间在 24 小时范围内,即 20 和 24,但凌晨 1 点的值是 1,并且上面的查询不起作用,因为 23 和 1 没有完全满足条件,我正在用当前时间检查它,所以如果时间是凌晨 2 点,我必须在查询中传递 2。

如何使用当前时间在两列之间进行查询?

【问题讨论】:

  • 这里没有 time_from_1 或 time_to_1

标签: mysql sql time between


【解决方案1】:

你可以使用:

SELECT *
FROM `ace_rp_inventory_locations_night`
WHERE (time_from_1 <= time_to_1 AND 23 between time_from_1 and time_to_1) OR
      (time_to_1 > time_to_1 AND 23 NOT BETWEEN time_from_1 and time_to_1);

注意:这使用了BETWEEN,这会影响范围端点的处理方式。您的问题没有指定要做什么。您可能应该明确说明不等式。

【讨论】:

  • 如果到时间最长为午夜 24 点,但从技术上讲,晚上 11 点介于晚上 11 点和凌晨 1 点之间,则此查询有效,在这种情况下,此查询返回空但应该返回该行。
  • @apoorvkanungo。 . .正如答案中所解释的,间隔的端点存在问题 - 您的问题没有解释应该如何处理它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多