在MySQL中按多个时间戳排序

时间:2018-06-29 21:20:12

标签: mysql

因此,我想从此表中进行选择。基本结构是:

  • 编号
  • Timestamp1
  • Timestamp2
  • Timestamp3(将来可能会有更多的时间戳记)

我想选择一个时间戳,并根据该时间戳等于在前端选择的任何日期进行排序。

例如:

SELECT Id FROM table WHERE DATE(Timestamp1) = 'datevariable'
OR DATE(Timestamp2) = 'datevariable' OR DATE(Timestamp3) = 'datevariable'  
ORDER BY Timestamp1 (if it == 'datevariable'), Timestamp2 (if it == 'datevariable'), etc.

任何帮助将不胜感激。如果可能的话,我想将其保留在查询中,而不是在查询后执行(尽管这可能是我要做的事情)。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您不关心多个列/时间戳匹配WHERE条件的情况-以下查询应该可以工作:

SELECT Id
FROM table
WHERE DATE(Timestamp1) = 'datevariable'
   OR DATE(Timestamp2) = 'datevariable'
   OR DATE(Timestamp3) = 'datevariable'
ORDER BY 
    CASE 'datevariable'
        WHEN DATE(Timestamp1) THEN Timestamp1
        WHEN DATE(Timestamp2) THEN Timestamp2
        WHEN DATE(Timestamp3) THEN Timestamp3
    END

根据您的评论:“我很可能使后一个时间戳取代前一个。” -您可能想取消订单

    CASE 'datevariable'
        WHEN DATE(Timestamp3) THEN Timestamp3
        WHEN DATE(Timestamp2) THEN Timestamp2
        WHEN DATE(Timestamp1) THEN Timestamp1
    END