2012-05-22 97 views
0

我的mysql數據庫存在阻塞問題。MySql日期:奇怪行爲

我有一個MySql數據庫的PHP網站。 一切工作正常。

我只是把SQL轉儲從一箇舊的數據庫服務器到新的數據庫服務器,因爲這個新的服務器上我有一個奇怪的現象:

的查詢,如:

select * from toto where date(myDateField) between '2001-01-01' and '2012-01-01'; 

不工作。我的意思是它不返回任何結果(也沒有錯誤)。

如果我做到以下幾點:

select * from toto where myDateField between '2001-01-01' and '2012-01-01'; 

它的工作原理。

我試着看看我的新服務器上我的mysql系統變量是不同的,但看起來都一樣。 奇怪的是,在這臺新服務器上,我已經在上週發佈了另一個轉儲,並且所有的工作都正常。 現在我不知道。

我不能去和修改我所有的PHP文件,因爲該網站在其他服務器上正常工作。我只想找到問題和解釋。

任何人有任何提示?

更新:

我已經做了更多的測試。 我在同一臺服務器上有2個數據庫。 在第一個(創建一箇舊的轉儲)一切都很好。 在第二個(使用最近的轉儲文件創建)我有問題。

所以我真的不知道可能是什麼問題。

+0

「myDateField」的數據類型是什麼? –

回答

0

首先檢查其格式做u得到您的服務器

select date(myDateField) from toto 

基於狀態之間的格式使用...日期格式可能形成服務器更改爲服務器即DD // //毫米yyyy或yy // mm/dd檢查....

+0

我做到了,兩臺服務器都是一樣的。我甚至在mysql系統變量中檢查過:相同的設置。 –

+0

SELECT * FROM toto'2001-01-01'和'2012-01-01'之間的DATE_FORMAT(myDateField,'%Y-%m-%d');試試這個 – vijaykumar

+0

隨着date_format它的工作。那麼我應該在我的服務器上更改什麼? –

0

我終於設法使它工作。我在不同的Linux發行版上安裝了相同的轉儲,現在它可以工作。在我有Gentoo之前,現在我有Ubuntu。 所以它在Gentoo上肯定是錯的。