基于列更改日期的mysql选择

基于列更改日期的mysql选择,mysql,select,Mysql,Select,我有一个订单表,有两种类型的订单。“修复”和“新建”。所有订单都有一个订单日期。我需要以一种不同寻常的方式对mysql select的结果进行排序 如果订单类型为“fix”,则其到期日为订单日期加1天 如果订单类型为“新”,则其到期日为订单日期加上2天 我需要按到期日订购,但到期日在列中不存在。如何执行此操作?您可以根据该条件和该列的顺序生成虚拟列: SELECT CASE order_type WHEN 'fix' THEN datecolumn + INTERVA

我有一个订单表,有两种类型的订单。“修复”和“新建”。所有订单都有一个订单日期。我需要以一种不同寻常的方式对mysql select的结果进行排序

如果订单类型为“fix”,则其到期日为订单日期加1天

如果订单类型为“新”,则其到期日为订单日期加上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\u 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

正如我从你那里读到的问题,你需要在截止日期前订购 这是按到期日输入的代码顺序
在此处输入代码

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