2012-05-22 100 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上肯定是错的。