mysql - 重新排列表中值的位置

标签 mysql date

我使用的是MYSQL。我有一个包含计划开始日期和结束日期的表格。

    |      StartDate         |    FinishDate      |
    |Feb 1, 2016 11:50 AM    |Feb 2, 2016 3:37 PM |
    |Feb 2, 2016 4:29 PM     |Feb 3, 2016 8:16 PM |
    |Feb 3, 2016 8:17 PM     |Feb 3, 2016 8:34 PM |

我希望做的是获取没有日程条目的日期。 我想到的最简单的方法是生成一个新表,其中 FinishDate 和 StartDate 中的值将以这种格式重新排列(第一行第二列中的 FinishDate 值将是第一行第一列中的值,而第二行、第一列中的 StartDate 值将传输到第一行、第二列,依此类推):

期望的输出 没有分配:

    |      StartDate         |    FinishDate      |
    |Feb 2, 2016 3:37 PM     |Feb 2, 2016 4:29 PM |
    |Feb 3, 2016 8:16 PM     |Feb 3, 2016 8:17 PM |
    |Feb 3, 2016 8:34 PM     |  -                 |

如何才能达到预期的输出?预先非常感谢您。

最佳答案

MySql 没有窗口函数,因此生成这种结果总是很棘手。一种可能性是:

SELECT
  t1.FinishDate StartDate
, MIN(t2.StartDate) FinishDate

FROM table t1
LEFT JOIN table t2 ON t2.StartDate > t1.FinishDate
GROUP BY 1

如果您的日期列已建立索引并且需要处理的行数相对较少,则此方法会很有效。

关于mysql - 重新排列表中值的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35143888/

相关文章:

java - Android 日期至今的天数

java - Spring JDBC - 将对象转换为 Blob 时出现 ClassCastException

javascript - 从网页上的 php 调用的 html 和 div 添加的 Jquery 函数无法正常工作

php - MySQL 资源 ID #

javascript - Bootstrap3 Datepicker - 计算活跃日期

java - 为什么 Calendar.getInstance() 和 getDate() 方法无法按预期工作?无法检索日期

linux - 使用 awk 更改文件中的日期格式

Bash/Date/法语本地环境

Mysql递归查询不返回父级

MySql触发器,在插入之前删除同一个表中的一行