管理回答这个问题,但不是通过使用' help datetime' (已经这样做了)或者通过阅读N.Cox' Speaking Stata:关于数字和字符串'。 解决方案:
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 |
我想放弃时间并更改格式,以便我按实际日期排序。
答案 0 :(得分:1)
将您的数据用作沙箱(您可以使用dataex
(SSC)在以后的问题中轻松创建此类问题,并在变量名称中提示日期运行的日期,月份,年份,然后我们就可以只需忽略substr()
中无用的时间,并将有用的内容传递给daily()
。为了便于阅读,请添加日期format
,然后根据需要sort
工作。
. 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 |
+------------------------------+
答案 1 :(得分:0)
如果您将日期存储为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
http://www.stata.com/statalist/archive/2013-08/msg01434.html