【问题标题】:MySQL - order by string dateMySQL - 按字符串日期排序
【发布时间】:2014-02-01 01:36:23
【问题描述】:
我有一个元值,它被加入到我的帖子中,即日期。我希望只能获得未来的帖子,但这个日期是一个 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
【问题讨论】:
标签:
mysql
sql
date
select
sql-order-by
【解决方案1】:
使用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;
【解决方案2】:
试试这个
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