【问题标题】:MySQL how to compare 2 dates and return 1 of the specific outputs based on its return value?MySQL如何比较2个日期并根据其返回值返回1个特定输出?
【发布时间】:2020-02-04 09:44:20
【问题描述】:

这是我的目标:

  • 比较 2 个日期,今天的日期和结束日期,例如2020/02/04 至 2021/02/03
  • 从上面返回总天数。例如以上是365天
  • If 语句 - 如果总天数小于 365 天的 50%,则返回值 Reject 如果它在 51% - 75% 之间的区域内,则返回值是 Caution.. 如果它高于 76% 返回值是accept

这是我到目前为止所做的:

select datediff('2021-02-03', curdate());

输出是365days。

如何将上述 3 个输出放入 1 个查询中? - 或 3 个不同的

【问题讨论】:

  • 你需要写一个程序
  • @salsinga 我去看看
  • @98Ed 你需要写什么
  • 这里不需要过程
  • 我真的不明白这与数据的存储和检索有什么关系。

标签: mysql


【解决方案1】:

对于这种情况,您可以使用CASE 语句。根据您的解释,这里是您的示例。

SET @threshold = 365;
SET @date_diff = datediff('2020-02-28', curdate());
select @date_diff diff, @threshold `limit`, @threshold * 0.5 limit_50, @threshold * 0.75 limit_75, 
case
    when @date_diff <=  (@threshold * 0.5) then 'REJECT'
    when (@date_diff > (@threshold * 0.5)) and (@date_diff <= (@threshold * 0.75))  then 'CAUTION'
    ELSE 'ACCEPT'
end as status
;

根据需要更改条件和输出。在这里玩 - https://paiza.io/projects/28mhUtOmP4HiVe8YDDTo9Q?language=mysql

【讨论】:

    【解决方案2】:

    set @dt_comp='2021-02-03'; select (case when datediff(@dt_comp, curdate())/365 <= 0.5 then 'Reject' when datediff(@dt_comp, curdate())/365 >=0.51 and datediff('2021-02-03', curdate())/365 <=0.75 then 'Caution' when datediff(@dt_comp, curdate())/365 >0.75 then 'Accepted' end) as descr_status;

    【讨论】:

      【解决方案3】:

      你可以使用下面的sql来做到这一点

      SELECT 
      CASE
          WHEN DATEDIFF('2019-10-30', Curdate()) > 365/2 THEN "Reject"
          WHEN DATEDIFF('2019-10-30', Curdate()) < 365/4 THEN "Accept"
          ELSE "Caution"
      END AS result;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-07
        • 1970-01-01
        • 1970-01-01
        • 2019-08-31
        • 2011-02-02
        相关资源
        最近更新 更多