我有问题。我在date
格式中选择了varchar(10)
列,date
格式为23-May-2015
格式。
现在,我希望获取日期23-May-2015
和02-June-2015
之间的所有行。
如何在两个日期之间获取所有行。
我尝试过使用此查询
SELECT `custid`
FROM `milkdet`
WHERE `date`>='.$stdate.' AND `date`<='.$enddate.'
GROUP BY `custid`
ORDER BY `date`
但它不起作用。
PS:我这样做只是为了了解这件事是怎么可能的。答案 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'