我想從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