php – 将字符串日期与MySql查询中的另一个字符串日期进行比较

我正在尝试从MySql服务器获取日期为>的条目. date_begin和< DATE_END 我的问题是表列“date”设置为VARCHAR,我正在比较它的字符串也直接来自< input type =“text”/>

mysql表和文本框中的日期格式(作为字符串/ varchar)将是DD.MM.YYYY

我的问题是,如果我这样做

(php代码)

 $query = "SELECT * FROM table WHERE date>='" . $dateBegin . "' AND date<='" . $dateEnd . "'";

结果将是完全随机的.

我知道为什么会这样,所以问题是:我怎样才能比较这个以获得正确的结果?

谢谢所有能提供帮助的人

更新:

现在我尝试了这个解决方案,但它也不起作用.

$query = "SELECT * FROM artikel WHERE STR_TO_DATE(datum, '%d.%m.%Y')>=STR_TO_DATE('" . $_REQUEST['dateTo'] . "', '%d.%m.%Y')" . "' AND STR_TO_DATE(datum, '%d.%m.%Y')<=STR_TO_DATE('" . $_REQUEST['dateTo'] . "', '%d.%m.%Y')";

$_REQUEST [‘dateFrom’]和$_REQUEST [‘dateTo’]来自2个文本框,输入是一个像这样的字符串“05.06.2005”.

在’datum’栏目(德语为日期)的db-table’artikel'(德语文章)中,值为VARCHAR,格式相同(“05.06.2005”).

最佳答案
始终将日期与日期,整数与整数等进行比较

使用MySQL,您可以使用str_to_date函数指定如何处理字符串日期.

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

例如如果您的日期列被称为“mydate”: –

SELECT * from table
where STR_TO_DATE(mydate, '%m/%d/%Y') >= STR_TO_DATE('04/31/2004', '%m/%d/%Y')
...

并始终确保您验证来自用户的任何字符串输入,以避免SQL注入攻击.

编辑:正如Dems指出的那样,这不是最理想的,因为日期值应该作为日期值存储在数据库中.

转载注明原文:php – 将字符串日期与MySql查询中的另一个字符串日期进行比较 - 代码日志