我需要更新MySQL表中的一堆日期,同时保留日期的时间部分。例如,我这样加入:
select crt.StartTime, crt.EndTime, crs.WorkDate
from CrewReportTimesheet crt
join CrewReportSummary crs
on crt.CrewReportSummaryID = crs.CrewReportSummaryID
crt.StartTime
和crt.EndTime
的日期错误但时间正确。 crs.WorkDate
有正确的约会,但没有时间。因此,对于与上述联接匹配的所有记录,我需要将crt.StartTime
和crt.EndTime
设置为与crs.WorkDate
相同的日期,同时保留这些列中的时间。
以下是错误数据的示例:
注意带有时间戳的前2列。时间是对的,日期是错误的。单元格A1和B1应该是2015-12-19,就像C1一样。等等。
最好的方法是什么?提前谢谢。
答案 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))