2016-08-01 46 views
1

我看過其他問題的建議。添加了反向標籤,檢查了我是在比較日期值,但無法使此代碼正常工作。我在這個聲明中做錯了什麼?MYSQL日期比較問題異常

SELECT * from project where project.completed_date >= '2015-01-01' order by customer, projectName

它給了我一個異常

「javax.servlet.ServletException:java.sql.SQLException中:在未知列」2015年1月1日 'where子句'「

爲什麼它將日期視爲列而不是值?

+1

請做正確的格式。 – Jay

回答

1

您應該在日期前後使用單引號(或雙引號),而不是反引號。因此查詢應該如下所示:

SELECT * 
FROM project 
WHERE project.completed_date >= '2015-01-01' 
ORDER BY customer, projectName 
+0

嘗試使用只有單引號,並沒有得到一個錯誤,但也沒有得到任何返回。 (SELECT * from project where project.completed_date> ='2015-01-01'order by customer,projectName) – thomas810

+1

要麼你沒有匹配的數據,要麼你做了'completed_date'一個'varchar'列(頑皮淘氣)。 –

0

您正在比較字符串和日期。重寫查詢,如:

SELECT * from project where project.completed_date >= STR_TO_DATE('2015-01-01','%Y-%m-%d') order by customer, projectName 

欲瞭解更多信息,在可以看到:Converting a date in MySQL from string field

+0

試過這個(SELECT * from project where project.completed_date> = STR_TO_DATE('2015-01-01','%Y-%m-%d')order by customer,projectName)並且沒有收到錯誤,但我也是如此沒有得到任何回報,應該有100列在匹配 – thomas810

+1

什麼是'project.completed_date'類型或格式? – cdaiga

+0

啊,我用Oracle數據庫的通配符。我剛剛糾正了我的答案。 – cdaiga

1

嘗試

SELECT * 
FROM project 
WHERE completed_date >= STR_TO_DATE('2015-01-01', '%Y-%m-%d') 
ORDER BY customer, projectName