【问题标题】: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

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 1970-01-01
      • 2016-08-07
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多