将字符串日期转换为人类可读格式HRF(Stata)

时间:2018-02-12 14:02:44

标签: date format stata

版本:stata15

日期(格式为%9s),输入8s - 20171230

date
20171230
20171230 

我希望能够看到30dec2017,

gen newdate = date(date, "YMD")
format newdate %td 
list 

这是我看到的

date       newdate 
20171230    . 

为什么我在新的日期变量中看到缺少的数据?我在newdate %td命令中做错了什么?

1 个答案:

答案 0 :(得分:2)

回答原始问题:

这对我来说没有明显的意义。这样的问题也浪费你的时间。

您没有提供清晰可重复的数据示例。在Stata的最新版本中,help dataex告诉您如何执行此操作。如果您使用旧版本的Stata,那么您应该告诉我们。

  1. 您的第一句话似乎告诉我们您的字符串变量date的存储类型为str8且显示格式为%9s

  2. 如果是这样,那么tostring毫无意义,因为你已经有了一个字符串变量。

  3. 语句gen date = date(date, "YMD")是非法的,因为date已作为变量存在。如果你键入它,它将无法工作。如果你输入别的东西,你应该告诉我们。

  4. 格式%td应该会给你一个相当可读的日期。所以,你已经回答了自己的问题。如果您有数字日期变量,请阅读help datetime display formats以了解详情。

  5. 编辑上述大部分与真实问题无关的事实表明你浪费时间不去问真正的问题。

    回答修改后的问题:

    我无法重现您的问题。您报告缺少日期结果,显然没有任何一种显示格式可以理解。但Stata 15.1为我做了这个。所以,你告诉我们的事情是错的。也许你的Stata已经损坏,或者其他东西不像你说的那样。

    clear 
    set obs 1 
    gen str8 date = "20171230"
    gen newdate = daily(date, "YMD") 
    
    list 
    
         +--------------------+
         |     date   newdate |
         |--------------------|
      1. | 20171230     21183 |
         +--------------------+
    

    21183将以%td格式很好地显示。使用daily()而不是date()是无关紧要的,因为date()会产生相同的结果。