MySQL - 按字符串日期排序

时间:2014-01-13 10:31:38

标签: mysql sql date select sql-order-by

我有一个元值正在加入我的帖子,这是日期。我希望只能获得未来的帖子,但这个日期是varchar,格式为

dd-mm-yyyy

这是我到目前为止所尝试的但似乎无法正常工作

select `posts`.*, `storage_varchars`.`meta_value`

from `posts` left join `storage_varchars` on 
       `posts`.`id` = `storage_varchars`.`post_id` 
where `parent_id` = 20 and 
         DATE(storage_varchars.meta_value) >= NOW() 
order by DATE(storage_varchars.meta_value) asc

2 个答案:

答案 0 :(得分:6)

使用STR_TO_DATE()功能:

试试这个:

SELECT p.*, s.meta_value
FROM posts p 
LEFT JOIN storage_varchars s ON p.id = s.post_id 
WHERE parent_id = 20 AND STR_TO_DATE(s.meta_value, '%d-%m-%Y') >= CURRENT_DATE() 
ORDER BY STR_TO_DATE(s.meta_value, '%d-%m-%Y') ASC;

答案 1 :(得分:0)

试试这个

select `posts`.*, `storage_varchars`.`meta_value`

from `posts` left join `storage_varchars` on 
       `posts`.`id` = `storage_varchars`.`post_id` 
where `parent_id` = 20 and 
         STR_TO_DATE(storage_varchars.meta_value, '%d %M %Y') >= NOW() 
order by STR_TO_DATE(storage_varchars.meta_value, '%d %M %Y') DESC

STR_TO_DATE

相关问题