【问题标题】:Comparing two MySQL dattetime columns [duplicate]比较两个 MySQL 日期时间列 [重复]
【发布时间】:2020-03-20 12:23:34
【问题描述】:

我有一个付款表,其中包含以下两列:

created_at
paid_at

我想做的是选择所有行,其中:

paid_at >= (created_at + 30 days)

所以,虽然我可以这样做:

SELECT * FROM users WHERE created_at >= paid_at;

语法是什么:

SELECT * FROM users WHERE created_at >= (paid_at + 30 days);

这是一个 Rails 应用程序,我通常通过 ActiveRecord 查询来执行此操作,但似乎 ActiveRecord 不是为此而构建的,所以我需要使用本机查询。

【问题讨论】:

    标签: mysql sql date select


    【解决方案1】:

    您可以使用date_add 函数:

    SELECT * FROM users WHERE created_at >= DATE_ADD(paid_at, INTERVAL 30 DAY);
    

    【讨论】:

      【解决方案2】:

      你可以写:

      SELECT * 
      FROM users 
      WHERE created_at >= DATE_ADD(paid_at, INTERVAL 30 DAY);
      

      MySQL 8.0 - 12.6 Date and Time Functions

      【讨论】:

        【解决方案3】:

        可以使用Mysql函数date_add

        SELECT * 
        FROM users 
        WHERE created_at >= DATE_ADD(paid_at , INTERVAL 30 DAY);
        

        【讨论】:

          【解决方案4】:
          SELECT * 
          FROM users 
          WHERE created_at >= paid_at + INTERVAL 30 DAY;
          

          你也可以使用

          SELECT * 
          FROM users 
          WHERE DATEDIFF(paid_at, created_at) <= 30;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-11-06
            • 1970-01-01
            • 2011-08-09
            • 1970-01-01
            • 2011-08-03
            • 1970-01-01
            • 1970-01-01
            • 2014-07-16
            相关资源
            最近更新 更多