Stata 日期时间数据的转换

Stata 日期时间数据的转换,stata,Stata,设法回答了这个问题,但不是通过使用“帮助日期时间”(已经这样做了)或通过阅读N.Cox的“讲状态:关于数字和字符串”。 解决方案: gen dob_ymd_nn = date(dob_ymd,"DMYhm") format dob_ymd_nn %td 多谢各位 我的Stata变量dob_dmy显示参与者的出生日期。数据库已添加时间(全部读取时间为00:00)。它当前是一个字符串变量(str16)。当我排序时,它不是按日期排序,而是按第一天排序。见下文 63. | 01/01/1975 00:

设法回答了这个问题,但不是通过使用“帮助日期时间”(已经这样做了)或通过阅读N.Cox的“讲状态:关于数字和字符串”。 解决方案:

gen dob_ymd_nn = date(dob_ymd,"DMYhm")
format dob_ymd_nn %td
多谢各位

我的Stata变量
dob_dmy
显示参与者的出生日期。数据库已添加时间(全部读取时间为00:00)。它当前是一个字符串变量
(str16)
。当我排序时,它不是按日期排序,而是按第一天排序。见下文

63. | 01/01/1975 00:00 |
64. | 01/01/1985 00:00 |
65. | 01/02/2010 00:00 |

我想删除时间并更改允许我按实际日期排序的格式。

如果您将日期存储为MM/DD/YYYY格式的字符串,您将无法按月份、日期和年份进行排序(这不是很有帮助)。您需要将它们转换为日期,然后对它们进行排序

从以下链接:

gen date_obs = clock(datetime_obs, "MD20Yhm") //Obvously you have 4 digit years, so would change this to "MDYhm"
format date_obs %tc

@Stan指出了主要思想,即必须将字符串转换为数字日期变量@Roberto Ferrer强调,所有这些都在Stata内部显著记录。不需要互联网搜索

将您的数据用作沙箱(您可以在将来的问题中使用
dataex
(SSC)轻松创建这样的沙箱),并在变量名中暗示日期运行日、月、年,然后我们可以使用
substr()
忽略一天中无用的时间,并将有用的内容传递给
daily()
。为可读性添加日期
格式
,然后根据需要进行排序

. clear

. input str16 sdate 

                sdate
  1. "01/02/2010 00:00"
  2. "01/01/1985 00:00"
  3. "01/01/1975 00:00"
  4. end 

. gen ddate = daily(substr(sdate, 1, 10), "DMY") 

. format ddate %td

. sort ddate 

. list 

     +------------------------------+
     |            sdate       ddate |
     |------------------------------|
  1. | 01/01/1975 00:00   01jan1975 |
  2. | 01/01/1985 00:00   01jan1985 |
  3. | 01/02/2010 00:00   01feb2010 |
     +------------------------------+

我建议您至少阅读
help datetime
,如果您在代码方面遇到问题,请发回。原始标题“彻底查看了本网站、Stata网站、大学网站。找到了很多与我的查询无关或不起作用的内容”,对于任何人指出您的确切问题都是无用的。请选择信息性标题。您提到的解决方案记录在您提到的帮助中。您引用的2002年文章并不打算系统地讨论日期,在任何情况下都不可能讨论日期时间的处理,这是在2007年引入Stata的。不幸的是,必须指定一个
双精度
,以精确保存日期时间。请参见帮助日期