首先,明确是使用diffdate函数来算这个时间间隔:DATEDIFF(date1,date2) 返回两个时间之间的天数,date1晚于date2,否则返回天数为负
(这里用的是mysql,与其他SQL server等有些语法区别。)
数据说明:
用的数据集是从kaggle上导下来的,数据表名叫TData,涉及的数据是DeadlineDate和StartDate,导入时都是text类型,这两个时间格式是%m/%d/%Y %H:%i:%S,和diffdate要用的格式%Y-%m-%d不一样,所以最关键的就是转换时间格式。转换完成后调用diffdate即可。
-- 新增两个列,用来存放新的时间格式
alter table TData add column StartDate_new datetime;
SET SQL_SAFE_UPDATES = 0
update TData set StartDate_new=STR_TO_DATE(substring(StartDate,1,10), '%m/%d/%Y')
-- 其中,substring(StartDate,1,10) 用以取出年月日部分,从第1位取到第10位,然后转换成我们想要的格式。
alter table TData add column DeadlineDate_new datetime;
SET SQL_SAFE_UPDATES = 0
update TData set DeadlineDate_new=STR_TO_DATE(substring(DeadlineDate,1,10), '%m/%d/%Y')
-- 加一列length记录时间间隔
alter table TData add column length int;
update TData set length=datediff(DeadlineDate_new,StartDate_new)
效果如图所示:
这是原始的两列数据:
这是修改后新增的两列数据与时间间隔天数: