mysql select 根据列更改日期

mysql select with changing date based on column

我有一个table的订单,有两种类型的订单。 "fix" 和 "new"。所有订单都有一个订单日期。我需要以一种不寻常的方式对 mysql select 的结果进行排序。

如果订单类型为 "fix",它的截止日期为订单日期加 1 天。

如果订单类型为 "new",它的截止日期将是订单日期加上 2 天。

我需要在截止日期之前订购,但是截止日期是列中不存在的东西。我该怎么做?

您可以根据该条件生成虚拟列并按该列排序:

SELECT
     CASE order_type
         WHEN 'fix' THEN datecolumn + INTERVAL 1 DAY
         ELSE datecolumn + INTERVAL 2 DAY END order_date
FROM
    tablename
ORDER BY order_date DESC

case 语句与 date_add() 函数一起使用:

select type, case order.type
                        when 'fix' then date_add(OrderDate,interval 1 DAY)
                        else then date_add(OrderDate,interval 2 DAY)
                   end order_date
from table_name
order by order_date

正如我从你那里看到的问题,你需要在 due_date 之前订购 这是按 due_dateenter code here:

排序的代码
SELECT 
    *
FROM
    tablename
ORDER BY CASE order_type
    WHEN 'fix' THEN order_date + INTERVAL 1 DAY
    ELSE order_date + INTERVAL 2 DAY
END DESC;