按日期排序,基于所选日期,然后是MySQL存储过程中最近的+/-日期

时间:2017-09-20 09:30:47

标签: mysql sql stored-procedures

选定日期= 9/6/2017,日范围= +/- 2。 输出,天数应按如下方式订购:

public ActionResult testPost(string username)
{
    // username parameter is working
    // access HttpContent here
    var t = new TestClass() { Id = "333", Name = "name" };
    return Json(t, JsonRequestBehavior.AllowGet);
}

2 个答案:

答案 0 :(得分:0)

你应该在order子句中使用表达式,例如:

order by abs(Original_Date - Output_Date) asc

所以这样你就可以得到原始日期(2017年9月6日)到任何其他日期的距离,并且不要忘记取绝对值(绝对值)

答案 1 :(得分:0)

我在ORDER BY中使用了Case语句来实现这一点。

 ORDER BY CASE when (DATE(created_on) =  DATE(in_selected_date)) THEN 1
     when (DATE(created_on) < DATE(in_selected_date) AND DATEDIFF(DATE(created_on), DATE(in_selected_date)) = -1)  THEN 2
    when (DATE(created_on) > DATE(in_selected_date) AND DATEDIFF(DATE(created_on), DATE(in_selected_date)) = 1)  THEN 3
     when (DATE(created_on) < DATE(in_selected_date) AND DATEDIFF(DATE(created_on), DATE(in_selected_date)) = -2)  THEN 4
    when (DATE(created_on) > DATE(in_selected_date) AND DATEDIFF(DATE(created_on), DATE(in_selected_date)) = 2)  THEN 5
    ELSE 1 END ASC