数值型日期
从Excel中导入的日期(如2005/1/2的数值型日期)的处理方式:
# 直接转化为日期格式
format date %td
# 若带有时分秒:如“02Jan2005-01 00:00:00”的格式:
gen date = dofc(clock)
format date %td
# 将日度格式转化为周度(wofd)、月度(mofd)、季度(qofd)、半年度(hofd)和年度(yofd)
gen yw = wofd(date)
format yw %tw
# 若要跨越日度进行转换(如将周度转化为月度,或月度转化为半年度等),则需先转化为日度,再从日度转化为其他频度。
gen yd = dofw(yw)
gen ym = mofd(yd)
format ym %tm
文本型日期
从Excel中导入的文本(如“2005-01-02”或“20050102”的文本型日期)的处理方式:
# 直接转化为日期格式
gen date = date(date_string, "YMD")
# 从日期格式中提取年月日
gen year = year(date)
gen month = month(date)
gen day = day(date)
以此类推,还有halfyear,quarter,week,doy, dow等
# 拆分出文本年月日,并将年月日转化为日期格式
split date_string, p(-)
destring date_string1, gen(year)
destring date_string2, gen(month)
destring date_string3, gen(day)
# 将拆分得到的年月日合并为日期格式
gen date = mdy(month, day, year)
# 若数据为仅包含年月的文本(如“200501”),转化为年月日期格式:
gen ym = date(ym_string, "YM")
gen ym1 = mofd(ym)
format ym1 %tm
# 若数据为仅包含“年-月”的文本(如“2005-01”),转化为年月日期格式:
gen ym = monthly(ym_string,"YM")
以此类推,还有yearly, halfyearly, quarterly, weekly, date
保持日期格式输出
将stata中的日期格式导出Excel时,或将日期转化为文本时,往往会出现导出的格式发生了改变,如 01jan2005 转化为文本时,会变成“16438”.
# 保持显示格式进行转化
tostring date, force usedisplayformat replace