我想从MySQL服务器的条目,其中日期> date_begin and < date_end
比较字符串,日期与MySQL查询另一个字符串最新
我的问题是,在表列“date
”设置为VARCHAR
,而我比较它的字符串也直接从<input type="text"/>
的日期格式(如串/ VARCHAR)在MySQL表,并在文本框中会DD.MM.YYYY
我的问题是,如果我这样做
(PHP代码)
$query = "SELECT * FROM table WHERE date>='" . $dateBegin . "' AND date<='" . $dateEnd . "'";
结果将是完全随机的。
我知道为什么发生这样的问题是:我怎么能比较这得到正确的结果?
谢谢大家谁可以帮助
UPDATE:
现在我已经tryed这个解决方案,但它也不起作用。
$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'(德语中的文章)中,值为具有相同格式(“05.06.2005”)的VARCHAR's。
为什么日期为varchar?为什么不是时间戳或日期时间? –
将日期保留为字符串,然后将其作为日期进行处理意味着您会创建额外的编码开销,服务器上的额外负载,在服务器上使用额外的磁盘空间,引入具有错误格式的'日期'的可能性,以及破坏SQL引擎使用索引搜索该字段的能力。 * [我不能过分强调这一点] *:将数据存储在正确的数据类型中,不要存储字符串并将其“即时”转换;你正在走向一个受到伤害,低效率和调试地狱的世界。 – MatBailie
它不是我的mysql服务器,如果我有能力将数据类型更改为“日期”,我将提供支持。我只是必须为现有的网络应用程序添加过滤功能的人。但无论如何感谢 – Ace