版本:stata15
日期(格式为%9s),输入8s - 20171230
date
20171230
20171230
我希望能够看到30dec2017,
gen newdate = date(date, "YMD")
format newdate %td
list
这是我看到的
date newdate
20171230 .
为什么我在新的日期变量中看到缺少的数据?我在newdate %td
命令中做错了什么?
答案 0 :(得分:2)
回答原始问题:
这对我来说没有明显的意义。这样的问题也浪费你的时间。
您没有提供清晰可重复的数据示例。在Stata的最新版本中,help dataex
告诉您如何执行此操作。如果您使用旧版本的Stata,那么您应该告诉我们。
您的第一句话似乎告诉我们您的字符串变量date
的存储类型为str8
且显示格式为%9s
。
如果是这样,那么tostring
毫无意义,因为你已经有了一个字符串变量。
语句gen date = date(date, "YMD")
是非法的,因为date
已作为变量存在。如果你键入它,它将无法工作。如果你输入别的东西,你应该告诉我们。
格式%td
应该会给你一个相当可读的日期。所以,你已经回答了自己的问题。如果您有数字日期变量,请阅读help datetime display formats
以了解详情。
编辑上述大部分与真实问题无关的事实表明你浪费时间不去问真正的问题。
回答修改后的问题:
我无法重现您的问题。您报告缺少日期结果,显然没有任何一种显示格式可以理解。但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()
会产生相同的结果。