1

我想选择数据,如果日期匹配并且时间在开始时间和结束时间之间。我尝试了很多方法,但我没有成功。

检查下面数据表中的第 3 行,开始时间 08:00:00,结束时间是 11:00:00。这意味着 09:00:00 介于 08:00:00 和 11:00:00 之间

这是我的查询:

SELECT * FROM (`rides`) WHERE `date` = '2013/04/30' AND `start_time` >= '9:00:00' AND `end_time` <= '9:00:00'

如果您需要知道字段的数据类型,则表结构:

CREATE TABLE IF NOT EXISTS `rides` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  ...,
  ...,
  `date` date NOT NULL,
  `start_time` time NOT NULL,
  `end_time` time NOT NULL
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;

表中数据:

表中数据

4

3 回答 3

2

你写了 :

检查第 3 行 (...) 这意味着 09:00:00 介于 08:00:00 和 11:00:00 之间

我假设您希望结果集中有这一行。很显然,你的WHERE条件不对。你想要的是:

WHERE ... start_time <= '9:00:00' AND '9:00:00' <= end_time

或者

WHERE ... '09:00:00' BETWEEN start_time AND end_time

请注意,在上面的示例中,前导0是必需的。更规范的形式是:

WHERE ... CAST('9:00:00' AS TIME) BETWEEN start_time AND end_time
于 2013-04-30T15:02:56.350 回答
0

你可以使用 MySQL 的 between 子句看看这里 http://www.tutorialspoint.com/mysql/mysql-between-clause.htm

于 2013-04-30T11:33:59.167 回答
-1

通过查看您的数据,查询不应返回任何数据,因为您的表中没有合适的数据行。

于 2013-04-30T11:06:54.970 回答