數(shù)值型日期
從Excel中導入的日期(如2005/1/2的數(shù)值型日期)的處理方式:
# 直接轉(zhuǎn)化為日期格式
format date %td
# 若帶有時分秒:如“02Jan2005-01 00:00:00”的格式:
gen date = dofc(clock)
format date %td
# 將日度格式轉(zhuǎn)化為周度(wofd)、月度(mofd)、季度(qofd)、半年度(hofd)和年度(yofd)
gen yw = wofd(date)
format yw %tw
# 若要跨越日度進行轉(zhuǎn)換(如將周度轉(zhuǎn)化為月度,或月度轉(zhuǎn)化為半年度等),則需先轉(zhuǎn)化為日度,再從日度轉(zhuǎn)化為其他頻度。
gen yd = dofw(yw)
gen ym = mofd(yd)
format ym %tm
文本型日期
從Excel中導入的文本(如“2005-01-02”或“20050102”的文本型日期)的處理方式:
# 直接轉(zhuǎn)化為日期格式
gen date = date(date_string, "YMD")
# 從日期格式中提取年月日
gen year = year(date)
gen month = month(date)
gen day = day(date)
以此類推,還有halfyear,quarter,week,doy, dow等
# 拆分出文本年月日,并將年月日轉(zhuǎn)化為日期格式
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)
# 若數(shù)據(jù)為僅包含年月的文本(如“200501”),轉(zhuǎn)化為年月日期格式:
gen ym = date(ym_string, "YM")
gen ym1 = mofd(ym)
format ym1 %tm
# 若數(shù)據(jù)為僅包含“年-月”的文本(如“2005-01”),轉(zhuǎn)化為年月日期格式:
gen ym = monthly(ym_string,"YM")
以此類推,還有yearly, halfyearly, quarterly, weekly, date
保持日期格式輸出
將stata中的日期格式導出Excel時,或?qū)⑷掌谵D(zhuǎn)化為文本時,往往會出現(xiàn)導出的格式發(fā)生了改變,如 01jan2005 轉(zhuǎn)化為文本時,會變成“16438”.
# 保持顯示格式進行轉(zhuǎn)化
tostring date, force usedisplayformat replace