Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL从只有开始日期的两个连续行中派生结束日期_Mysql_Date_Row - Fatal编程技术网

MySQL从只有开始日期的两个连续行中派生结束日期

MySQL从只有开始日期的两个连续行中派生结束日期,mysql,date,row,Mysql,Date,Row,我有一张如下表: 我试过这个,但不起作用: SELECT A.id, cast(A.startdate as date) as from_date, cast(B.startdate as date) AS enddate FROM three A INNER JOIN three B ON B.id = (A.id) ORDER BY A.id,cast(A.startdate as date) ASC 我期望的结果应该是: 我想这就是你想要的: SELECT t.Id,

我有一张如下表:

我试过这个,但不起作用:

SELECT A.id, cast(A.startdate as date) as from_date, cast(B.startdate as date)
AS enddate
 FROM three A INNER JOIN three B ON B.id = (A.id)
ORDER BY A.id,cast(A.startdate as date) ASC
我期望的结果应该是:


我想这就是你想要的:

SELECT
    t.Id,
    t.old_value,
    t.new_value,
    t.StartDate,
    -- if it's the latest entry of distinct old_value new_value pairs
    IF(t1.Id IS NULL, t2.StartDate - INTERVAL 1 DAY, t.StartDate) AS EndDate
FROM three t
LEFT JOIN three t1 ON t.old_value = t1.old_value AND t.new_value = t1.new_value
    AND t.StartDate > t1.StartDate
LEFT JOIN three t2 ON t.new_value = t2.old_value
;

如果没有show,很难说会创建可用的示例数据。

请将代码和数据作为文本而不是图像发布。如果示例数据可用,则更容易制定解决方案。您使用的是什么版本的MySQL?为什么将日期强制转换为日期?您的示例数据和期望的结果是“损坏的”。我还建议包含一个自动增量列,因为日期(甚至DATETIME或TIMESTAMP)可以有重复项。