2017-07-02 73 views
1

我想要得到的日期是小於今天或MySQL數據庫截止日期,問題是日期字段類型是varchar,我的代碼是低於我能得到更少比日期,但不包括年,我需要月/日/年作爲輸出,我沒有擁有數據庫我只有一個只讀連接,只能使這種類型的查詢,我使用PHP。獲取日期類型是varchar的Mysql

//i did now include the whole query code below is my query string. 

$now = date('m/d/Y'); 

$sql = "SELECT * FROM todos WHERE DATE(due_date) < '$now'"; 

//other query here. 

我的輸出是日期今日下方是2017年7月3日

06/02/2018 
05/13/2016 
05/23/2017 
04/15/2015 
04/24/2019 

看着我的輸出就設法得到了截止日期,但只有一個月,一些日期仍然有效或到期明年,任何建議都會很棒!提前致謝!

+0

這不是問題。只需更改日期列的數據類型 – Strawberry

+0

我的一個問題是我無法更改數據庫的數據類型,我只被授予只讀訪問權限,主開發人員也無法公開更改其實際的可悲性。 – KaoriYui

+0

儘快擺脫這種情況 – Strawberry

回答

1

轉換爲常規日期,只是使用數據庫的比較:

SELECT * 
FROM todos 
WHERE str_to_date(due_date, '%m/%d/%Y') < curdate(); 

沒有必要在當前的日期通過從應用程序 - 除非你明確知道的問題與時區。

永遠不要將日期作爲字符串進行比較。那麼,如果你需要,確保你使用ISO格式YYYY-MM-DD(有或沒有連字符)。

+0

這工作得很好!非常感謝! – KaoriYui

+0

請注意,此查詢不能使用索引,所以它非常可怕 – Strawberry

+0

@Strawberry。 。 。在這種情況下,可以自由回答查詢,而不是*可以使用索引。 –