如何在php mysql中的日期范围之间获取数据

时间:2015-06-02 11:16:10

标签: php mysql date

我有问题。我在date格式中选择了varchar(10)列,date格式为23-May-2015格式。

现在,我希望获取日期23-May-201502-June-2015之间的所有行。

如何在两个日期之间获取所有行。

我尝试过使用此查询

SELECT `custid`
FROM `milkdet`
WHERE `date`>='.$stdate.' AND `date`<='.$enddate.'
GROUP BY `custid`
ORDER BY `date`

但它不起作用。

PS:我这样做只是为了了解这件事是怎么可能的。

2 个答案:

答案 0 :(得分:4)

varchar()日期是邪恶的,您应该使用mysql本机数据类型存储日期。

在您的情况下,首先需要使用str_to_date函数将日期转换为实际日期

mysql> select str_to_date('23-May-2015','%d-%M-%Y') as d ;
+------------+
| d          |
+------------+
| 2015-05-23 |
+------------+

现在在查询中你将有

select `custid`
from `milkdet` 
where str_to_date(`date`, '%d-%M-%Y') >= str_to_date('$stdate','%d-%M-%Y')
AND str_to_date(`date`, '%d-%M-%Y') <=str_to_date('$enddate','%d-%M-%Y')
group by `custid` 
order by `date`

答案 1 :(得分:-1)

SELECT  * FROM `milkdet` WHERE `date` >= '2015-05-23 00:00:00' 
AND `date` <= '2015-06-02 00:00:00'