参考计算中的确切日期

时间:2018-08-07 14:31:16

标签: date stata

我有一个日期变量(dd/mm/yyyy)。

我需要创建一个与 Dec等效的类似变量。 2016年3月31日以将其用于计算。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您需要使用daily()函数,然后相应地使用format数字变量:

clear
set obs 1

generate date = daily("31Dec2016", "DMY")
format %tdMonDDCCYY date

list

     +-----------+
     |      date |
     |-----------|
  1. | Dec312016 |
     +-----------+

在Stata的命令提示符下键入help daily()help format,以获取详细信息。

答案 1 :(得分:1)

我认为您有一个每日数字变量。有些人将日期作为字符串保存,这在Stata中不是很有用,还有其他类型的数字日期变量。

像2016年12月31日这样的日期是一个常数,可以计算为

. di mdy(12, 31, 2016)
20819

显示的可能是

. di %td  mdy(12, 31, 2016)
31dec2016

您可以通过其他方式获得相同的结果,例如

. di daily("31 Dec 2016", "DMY")
20819

没有什么可以阻止您将此常量放入变量中的,但是它只是复制与观察值相同次数的值,并且在大多数情况下毫无意义。可以直接使用它,也可以通过使用一些令人回味的宏或标量名称来使代码更易于理解:

. local Dec_31_2016 = mdy(12, 31, 2016)

. local today = mdy(8, 7, 2018)

. di `today' - `Dec_31_2016'
584

我猜想日期常数最可能的用途是计算自某个基准日期以来经过的时间。