Ace*_*Ace 3 php mysql sql date
我正在尝试从日期所在的MySql服务器获取条目 > date_begin and < date_end
我的问题是表列" date"设置为VARCHAR,我正在比较它的字符串也直接来自<input type="text"/>
mysql表和文本框中的日期格式(作为字符串/ varchar)将是 DD.MM.YYYY
我的问题是,如果我这样做
(php代码)
$query = "SELECT * FROM table WHERE date>='" . $dateBegin . "' AND date<='" . $dateEnd . "'";
Run Code Online (Sandbox Code Playgroud)
结果将是完全随机的.
我知道为什么会这样,所以问题是:我怎样才能比较这个以获得正确的结果?
谢谢所有能提供帮助的人
更新:
现在我尝试了这个解决方案,但它也不起作用.
$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')";
Run Code Online (Sandbox Code Playgroud)
在$_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')
...
Run Code Online (Sandbox Code Playgroud)
并始终确保您验证来自用户的任何字符串输入,以避免SQL注入攻击.
编辑:正如Dems指出的那样,这不是最理想的,因为日期值应该作为日期值存储在数据库中.