In Stata, how can I change the format of a date from “2010-01-11 00:00:00” to “1/11/2010”?

余生颓废 提交于 2019-12-13 08:59:29

问题


I am currently trying to change the format of a date from "2010-01-11 00:00:00" to "01-11-2010" or "1/11/2010". Currently "2010-01-11 00:00:00" is in a string format. I have tried to coerce using the date() function but it never returns to the point where Stata can recognize and sort. Would anyone have any idea how to do this?


回答1:


It's best if for future questions you post attempted code and why it's not working for you.

Maybe this works in your case:

clear all
set more off

*----- example data -----

set obs 1

gen dat = "2010-01-11 00:00:00"

describe
list

*----- what you want -----

gen double dat2 = clock(dat, "YDM hms")
format dat2 %tcDD-NN-YY

describe
list

Note that we go from string type to numeric type (double), and then adjust the display format.

See help format, help datetime and help datetime_display_formats.

Read also:

Stata tip 113: Changing a variable's format: What it does and does not mean N. J. Cox. 2012. Stata Journal Volume 12 Number 4. http://www.stata-journal.com/article.html?article=dm0067




回答2:


If you are ingesting time data in "2010-01-11 00:00:00" (SQL) format, then by default it is ingested into Stata as a str23

If you would like it as a Stata date format to manipulate, you could try the following (ingested_date_1 ... being your date columns)

foreach sqltime in ingested_date_1 ingested_date_2 { 
rename `sqltime' X
generate double `sqltime' =  clock(X, "YMD hms")
drop X  
format %tcDDmonCCYY_HH:MM:SS `sqltime' 
}

This, takes in multiple "dates", just replace your column names with ingested_date_1 ingested_date_2 etc and reformats them and keeps their 'original' name

Now the dates are in a stata recognised time format, %tc based of the clock, this will be sorted in the time-sense like you expect, rather than the ingested string which was not.

Additionally you may now reformat the display of the date to something that you would like or are comfortable reading, although it will make no difference to date manipulation, it is just the displayed appearance, in the case of viewing as "01-11-2010"

as Roberto says

format ingetsed_date_i %tcDD-NN-YY



来源:https://stackoverflow.com/questions/24988421/in-stata-how-can-i-change-the-format-of-a-date-from-2010-01-11-000000-to-1

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!