我将日期变量作为字符串从SQL(date1
)导入到Stata中,然后创建了一个新的日期变量(date2
),如下所示:
gen double date2 = clock(date1, "YMDhms")
format date2 %tc
但是,现在我想计算两个日期之间的天数(date3-date2
),格式如上,但我似乎无法做到。
我不在乎火腿,所以也许我应该先把它剥掉?然后将日期解构为YYYY MM DD作为单独的变量?我现在似乎没有做任何工作。
答案 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
通常更容易调试初始尝试。