在保留时间的同时更改日期

时间:2016-01-12 04:28:33

标签: mysql sql

我需要更新MySQL表中的一堆日期,同时保留日期的时间部分。例如,我这样加入:

select crt.StartTime, crt.EndTime, crs.WorkDate
from CrewReportTimesheet crt
join CrewReportSummary crs
on crt.CrewReportSummaryID = crs.CrewReportSummaryID

crt.StartTimecrt.EndTime的日期错误但时间正确。 crs.WorkDate有正确的约会,但没有时间。因此,对于与上述联接匹配的所有记录,我需要将crt.StartTimecrt.EndTime设置为与crs.WorkDate相同的日期,同时保留这些列中的时间。

以下是错误数据的示例:

enter image description here

注意带有时间戳的前2列。时间是对的,日期是错误的。单元格A1和B1应该是2015-12-19,就像C1一样。等等。

最好的方法是什么?提前谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用UPDATE语句和INNER JOIN来选择要更新的记录。

UPDATE CrewReportTimesheet crt
    INNER JOIN CrewReportSummary crs
    ON crt.CrewReportSummaryID = crs.CrewReportSummaryID
SET crt.StartTime = TIMESTAMP(DATE(crs.WorkDate), TIME(crt.StartTime)),
    crt.EndTime   = TIMESTAMP(DATE(crs.WorkDate), TIME(crt.EndTime))

如果您想使用CONCAT(),可以尝试以下方法:

UPDATE CrewReportTimesheet crt
    INNER JOIN CrewReportSummary crs
    ON crt.CrewReportSummaryID = crs.CrewReportSummaryID
SET crt.StartTime = CONCAT(DATE(crs.WorkDate), ' ', TIME(crt.StartTime)),
    crt.EndTime   = CONCAT(DATE(crs.WorkDate), ' ', TIME(crt.EndTime))