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;
我有一个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;