【问题标题】:How to determine the difference among dates in the same column?如何确定同一列中日期之间的差异?
【发布时间】:2010-04-25 14:35:13
【问题描述】:

如何判断出生日期之间的差异?

  1. +----------+----------+------------+
  2. |编号 |姓名 |出生 |
  3. +----------+----------+------------+
  4. | 00001 |爪 | 2010-04-17 |
  5. | 00002 |爪 | 2010-01-31 |
  6. | 00003 |爪 | 2009-11-31 |
  7. | 00004 |爪 | 2009-09-31 |
  8. | 00005 |爪 | 2009-07-31 |
  9. | 00006 |爪 | 2008-10-31 |
  10. +----------+----------+------------+

我想得到这个:

+----------+----------+------------+------------------------------------------+
  1. |编号 |姓名 |出生| 差异 |
  2. +----------+----------+------------+----------- -------------------------------------------+
  3. | 00001 |爪 | 2010-04-17 | 差异 (id1-id2) = 2010-01-31 - 2010-04-17 |
  4. | 00002 |爪 | 2010-01-31 | 差异 (id2-id3) = 2010-01-31 - 2009-11-31 |
  5. | 00003 |爪 | 2009-11-31 | 差异 (id3-id4) = 2010-01-31 - 2009-09-31 |

如果可能,ORDER BY diff DESC

感谢您的帮助

维拉

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您似乎想要使用datediff 函数,该函数返回两个日期之间的差值(以天为单位)。如果您希望差异始终为正,请应用 abs 函数。

    此外,您似乎希望将表连接到自身以获取与当前行相关的行(关系定义为 related_row.id = row.id+1)。

    如果不进一步了解表定义是什么,或者您希望如何显示差异,示例查询可能如下所示。

    select 
       t.id, 
       t.name, 
       t.birth, 
       abs(datediff(t.birth,t2.birth)) as diff 
    from table t
    inner join table t2 on (t.id+1) = t2.id
    order by abs(datediff(t.birth,t2.birth)) desc
    

    【讨论】:

    • 当我尝试使用 datediff 时出现错误消息。我研究了您提到的 Mysql - 参考手册,我选择使用 [TO_DAYS][1] 并且它有效。非常感谢您的合作。 [1]:dev.mysql.com/doc/refman/5.1/en/…
    猜你喜欢
    • 2012-04-16
    • 2019-09-25
    • 1970-01-01
    • 2013-03-24
    • 2017-03-10
    • 1970-01-01
    • 2011-04-03
    • 2020-11-19
    • 1970-01-01
    相关资源
    最近更新 更多