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

该范围被存储在数据库内,这意味着用户已给定的时间范围内进行2天,从27至29和从27定时一起匹配的日期和时间 - > 10:00: 00至29日 - > 11:00:00。这意味着用户将于2014年27日至29日上午10点至11点之间上市。如何在MySQL/PHP的

现在,如果我通过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 

现在的问题是,在逻辑上传递的参数是该范围内,但使用查询其没有因为时间的不检查的日期,13不是10 & 11之间,它不工作。我也尝试过DATETIME,但是它并没有像给我错误那样工作。

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

回答

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' 

Ofcourse您可以使用您的PHP变量而不是测试日期我在那里查询。您可以格式化您的PHP值以符合MySQL日期时间格式。

+0

我正在通过2014-09-28 13:00:00作为参数。但在你的情况下,你已经比较了2日期和时间,而在我的情况下,我需要比较1日期时间和数据库中存储的日期时间。 – Scorpion 2014-09-29 03:18:16

+0

是的,这只是一个示例,您可以在查询中对这两个条件使用相同的日期。 – 2014-09-29 03:49:53

0

如果您期待较大的结果或较大的数据库,我建议您使用“BETWEEN”。
但我想澄清你的数据库模式有2个字段进行比较?即“To_DateTime”和“From_DateTime”?如果是这样,我借调了Hanky的答案。