【问题标题】:datediff in mysql select new field only if of certain valuemysql中的datediff仅在具有特定值时才选择新字段
【发布时间】:2013-06-13 19:18:28
【问题描述】:

我有一个包含 2.000.000 行的巨大表格,其中有两列是日期。现在我想找到两个日期之间的差异大于 30 的所有行。 我已经设置了这种查询:

SELECT DATEDIFF(date1, date2) as new
FROM table1;

它可以工作并列出所有结果并显示差异。现在,我希望只有那些两个日期之间的差异大于 30 的情况,并且也有这个数字的证据。

我试过了

SELECT DATEDIFF(date1, date2) >30 as new
FROM table1;

但在新列中,我的值始终为 1(我认为代表 TRUE),但我需要看到这种差异(数字:31、32、33 ecc。)。

有人可以帮帮我吗?

谢谢

【问题讨论】:

  • 选中已接受答案左侧的复选标记,不要简单地将标题重命名为 (CLOSED)。选择答案会自动关闭问题。

标签: mysql datediff


【解决方案1】:

如果我没记错的话,试试 SELECT datediff(date1, date2) AS new FROM table1 WHERE new > 30;

> 运算符可用作布尔值,用于比较您的 datediff() 和您的 30。这就是为什么您应该将它放在 WHERE 语句中,以防止在您的选择中出现布尔值。

【讨论】:

    【解决方案2】:
    select datediff(date1;date2) >30 as new from table1
    

    给出值:1,因为它返回 datediff(date1;date2) > 30 是否为真!

    试试这个


    SELECT datediff(date1;date2) as new FROM table WHERE datediff(date1;date2) >30;

    【讨论】:

      【解决方案3】:
      SELECT DATEDIFF(date1, date2) as new
      FROM table1
      WHERE DATEDIFF(date1, date2) > 30;
      

      【讨论】:

      • 感谢 Olivier 但返回 NULL
      • 这是什么意思?您的结果集是空的还是具有单个 NULL 值的单行?
      • 嗨 Olivier,我又把它写下来了;很好用,非常感谢
      猜你喜欢
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多