2010-04-10 164 views
-1

嘿,我需要一点点帮助,弄清楚如何为我的选择查询获得一段时间。这里是我想出来的代码:mySQL日期范围问题

select id, idNumber, theDateStart, theDateEnd 
from clients 
WHERE idNumber = '010203' 
AND theDateStart >= '2010-04-09' 
AND theDateEnd <= '2010-04-09'; 

这是在表中的数据是这样的:

TheDateStart = 2010-04-09 
TheDateEnd = 2010-04-11 

当测试上面的代码,它不填充任何内容。如果我把TheEndDate取出,它会填充,但是还有一些其他表格数据以及它不应该做的(它应该只有一条记录)。

我知道问题在两个日期之内。我不知道如何去获取DateStart和DayEnd的日期范围,因为如果有人在2010年4月10日尝试它,它仍然需要知道它在2010年4月9日 - 2010年 - 04-11。但现在,它不...

任何帮助将是伟大的! :O)

大卫

+0

什么样的 '%010203%' 的发生的ID号,是你的日期列字符串或约会!? – lexu 2010-04-10 06:12:51

回答

0

确定。我得到它:O)(YAY去我)

select id, idNumber, theDateStart, theDateEnd 
from clients 
WHERE idNumber = 'NB010203' 
AND '2010-04-09' BETWEEN theDateStart AND theDateEnd; 

大卫

0

尝试以下

select id, idNumber, theDateStart, theDateEnd 
from clients 
WHERE idNumber = '010203' 
AND date_format(theDateStart, '%Y-%m-%d')>= '2010-04-09' AND 
    date_format(theDateEnd, '%Y-%m-%d')<= '2010-04-09' 
+0

尝试过,但执行后仍然没有显示数据。 – StealthRT 2010-04-10 03:00:48

+0

Just nit-picking:不要将date-column转换为字符串,而是将字符串转换为日期。只有一个字符串,那里有(很多)不同的列。一次转换而不是多次=>性能提升。此外,如果您转换日期列,则不能使用潜在索引。 – lexu 2010-04-10 06:01:08

+0

啊,注意:o)谢谢,Lexu – StealthRT 2010-04-10 07:40:32