Mysql DATE_FORMAT排序不起作用

时间:2013-12-06 06:49:10

标签: mysql cakephp

我在cakephp框架中工作,

我将日期字符串存储在varchar字段中。我需要在需要更改格式之后将其转换为时区。这是查询。

SELECT DATE_FORMAT(cast( CONVERT_TZ(`leads`.`221`,
                        'UTC',
                        'America/Los_Angeles') as datetime), '%b %d %Y %h:%i %p') 
from leads order by DATE_FORMAT(cast( CONVERT_TZ(`leads`.`221`,
                        'UTC',
                        'America/Los_Angeles') as datetime), '%b %d %Y %h:%i %p') desc.

这里时区隐蔽​​,日期格式一切正常。但是在对这个字段进行排序时,它的工作方式就像字母顺序而不是日期排

我知道我们需要从字段中删除额外的mysql函数。然后只有当我们给予

时才有效
 `order by `leads`.`221` desc` 

但我无法这样做。因为它是由cakephp框架创建的。我无法覆盖。

请提供解决方案。

1 个答案:

答案 0 :(得分:0)

在查询中使用AS可让您按照正在进行的操作进行排序。

SELECT DATE_FORMAT(cast( CONVERT_TZ(`leads`.`221`,
                    'UTC',
                    'America/Los_Angeles') as datetime), '%b %d %Y %h:%i %p') 
as `new_date` from `leads` order by `new_date` DESC;