日期之间的天数计算

时间:2016-11-08 21:26:56

标签: datetime stata

我将日期变量作为字符串从SQL(date1)导入到Stata中,然后创建了一个新的日期变量(date2),如下所示:

gen double date2 = clock(date1, "YMDhms")
format date2 %tc

但是,现在我想计算两个日期之间的天数(date3-date2),格式如上,但我似乎无法做到。

我不在乎火腿,所以也许我应该先把它剥掉?然后将日期解构为YYYY MM DD作为单独的变量?我现在似乎没有做任何工作。

1 个答案:

答案 0 :(得分:1)

听起来就像日期,你实际上是指时间戳(又名日期时间)变量。根据我的经验,通常不需要将日期/时间戳转换为字符串,因为ODBC和Stata将很好地处理转换为SIF td / tc格式。

但也许您导出到文本文件然后读入数据。以下是一些解决方案。

tc时间戳以01jan1960 00:00:00.000为单位,以毫秒为单位,假设1000 * 60 * 60 * 24 = 86,400秒/天(即忽略闰秒)。这意味着您需要将差值除以该数字以获得经过的天数。

例如,2016年是闰年:

. display (tc(01jan2017 00:00:00) - tc(01jan2016 00:00:00))/(1000*60*60*24)
366

您还可以使用dofc()函数创建时间戳之外的日期并省略除法:

. display (dofc(tc(01jan2018 00:00:00)) - dofc(tc(01jan2016 00:00:00)))
731

2017年不是闰年,因此366 + 365 = 731天。

您可以将generate与所有这些功能一起使用,但display通常更容易调试初始尝试。