2011-02-03 41 views
0

相同像DATE_FORMAT(ExpenditureDate, '%D-%间 - %Y')'01 -01-2011' AND '31 -01-2011' 之间的问题,为了通过在日期类型

另外我不能能够检查cond与之间,?

ExpenditureDate - DATE类型enter image description here

下面的查询正确显示,最新的日期来顶一个个

SELECT ExpenditureName,ExpenditureAmount,ExpenditurePlaceTypeWhome,ExpenditureDate FROM tblexpenditure WHERE Status=1 AND EntryUser=2 ORDER BY ExpenditureDate DESC 

,但如果我加入DATE_FORMAT(ExpenditureDate,'%D-%间%Y')作为ExpenditureDate

然后失去我正确的顺序,它显示所inordered

SELECT ExpenditureName,ExpenditureAmount,ExpenditurePlaceTypeWhome,date_format(ExpenditureDate,'%d-%m-%Y') as ExpenditureDate FROM tblexpenditure WHERE Status=1 AND EntryUser=2 ORDER BY ExpenditureDate DESC 

回答

2

我没有一个运行mysql的盒子来测试,但我尽量避免将字符串格式化的可显示'开支日期'命名为与排序的字符串相同的名称。

1

MySQL似乎排序格式化的值。尽量写作

...,date_format(ExpenditureDate,'%d-%m-%Y') as FormattedExpenditureDate ... 

但保留列名为ORDER BY子句。

2

他们可能会排序,但按日期的排序顺序而不是按时间顺序。这是很正常的,因为您对ExpenditureDate别名进行排序,这是一个包含格式化日期的字符串。 使用另一个别名:

SELECT ExpenditureName,ExpenditureAmount,ExpenditurePlaceTypeWhome,date_format(ExpenditureDate,'%d-%m-%Y') as FormattedExpenditureDate FROM tblexpenditure WHERE Status=1 AND EntryUser=2 ORDER BY ExpenditureDate DESC 

如果你真的想保持相同的别名,你也可以试试这个:

SELECT ExpenditureName,ExpenditureAmount,ExpenditurePlaceTypeWhome,date_format(ExpenditureDate,'%d-%m-%Y') as ExpenditureDate FROM tblexpenditure WHERE Status=1 AND EntryUser=2 ORDER BY tblexpenditure.ExpenditureDate DESC 
+0

请清洁香港我的更新 – Bharanikumar 2011-02-04 01:57:13