2017-01-02 913 views
0

我正在處理包含數據庫中包含日期的行的項目。我想回復日期等於或大於今天的字段的數據。我看過其他文章,並嘗試了很多不同的方法,但尚未成功。目前,當我執行> =的操作時會返回一個錯誤,但當我剛剛執行下面的語句時,我會從數據庫中獲取所有行。從mysql表中選擇日期大於或等於今天的記錄

$sql = "SELECT * FROM drives WHERE ddest = '{$trimmed}' AND 'leave_date' => DATE_FORMAT(CURDATE(), '%m/%d/%Y') LIKE '%$trimmed%' ORDER BY timeago DESC"; 
+0

'LIKE'%$ trimmed%''應該做什麼? – Chris

+0

我通常使用類似'SELECT * FROM table1 WHERE datestored> = \''。日期('Y-m-d H:i:s')。 '';'' –

+0

它返回數據,其中ddest基於查詢,該查詢被修剪。謝謝 – kylel9506

回答

3

試試這個

$sql = "SELECT * FROM drives WHERE ddest = '{$trimmed}' AND 'leave_date' >= NOW() LIKE '%$trimmed%' ORDER BY timeago DESC"; 

要不然這,

$sql = "SELECT * FROM drives WHERE ddest = '{$trimmed}' AND 'leave_date' >= DATE_FORMAT(CURDATE(), '%m/%d/%Y') LIKE '%$trimmed%' ORDER BY timeago DESC"; 
+0

謝謝,但這不起作用。 Ieave_date的格式爲01/01/2017,這就是我認爲格式化CURDATE()的原因。 – kylel9506

+0

然後嘗試執行此操作'leave_date'> = DATE_FORMAT(CURDATE(),'%​​m /%d /%Y')。我只糾正了你的大於或等於運算符的符號 – funsholaniyi

+0

@FunshoOlaniyi你是對的,但語法錯了lil bit..because因爲mysql默認日期格式是'Ymd'os'leave_date'> = DATE_FORMAT(CURDATE(),'%​​Y- %m-%d')' –

0

如果你想要等於或大於今天的日期嘗試此查詢

select * from drives where day(now()) <= day(ddest) and year(ddest) >= year(now()); 
0

有效的查詢可能是這個樣子:

SELECT * 
    FROM drives 
WHERE ddest = '{$trimmed}' 
    AND leave_date >= CURDATE() 
ORDER 
    BY timeago DESC 

任何剩餘的問題更可能與你在處理我們的數據,而隨後與查詢本身的方式做。

相關問題