如何在mysql / php中一起匹配日期和时间

时间:2014-09-29 02:51:07

标签: php mysql date datetime time

Date 1 :- 2014-09-27 10:00:00
Date 2 :- 2014-09-29 11:00:00

此范围存储在数据库内,这意味着用户已经给出了从27到29的2天的时间范围和从27到>的时间。 10:00:00至29 - > 11:00:00。这意味着用户将于2014年7月27日至29日上午10点至上午11点之间使用。

现在,如果我通过2014-09-28 13:00:00,这是在日期范围内,也是在时间范围内,因为用户指定了整天,因为可以在范围内看到。

SELECT * FROM TABLE_NAME WHERE Id = $Id AND DATE('$currentDate') BETWEEN DATE(From_DateTime) AND DATE(To_DateTime) AND TIME('$timeHour') BETWEEN TIME(From_DateTime) AND TIME(To_DateTime)

From_DateTime = Date1
To_DateTime = Date2
currentDate = 2014-09-28
timeHour = 13:00:00

现在的问题是逻辑上传递的参数在范围内但是使用查询不是因为在TIME中它不检查日期,13不在10&之间。 11所以它不起作用。我也尝试了DATETIME,但它没有给我错误。

我需要一种匹配日期和方式的方法时间都在同一时间。有任何建议的人。我使用PHP作为编程语言。

2 个答案:

答案 0 :(得分:2)

如果值存储在DATETIME中,就像您提到的格式

那样
Date 1 :- 2014-09-27 10:00:00
Date 2 :- 2014-09-29 11:00:00

然后你甚至不需要那么复杂。只需使用普通的比较运算符

SELECT * FROM yourTABLE
WHERE startDate >= '2014-09-27 13:00:00'
AND endDate <= '2014-09-29 10:00:00'

当然,您可以使用PHP变量而不是查询中的测试日期。您可以将PHP值格式化为符合MySQL日期时间格式。

答案 1 :(得分:0)

如果您期望大型结果或大型数据库,我建议您使用“BETWEEN” 但是我想澄清你的数据库架构有2个字段要比较?即“To_DateTime”和“From_DateTime”?如果是这样,我借调了汉克的回答。