在Stata中,如何将日期格式从“2010-01-11 00:00:00”更改为“1/11/2010”?

在Stata中,如何将日期格式从“2010-01-11 00:00:00”更改为“1/11/2010”?,stata,Stata,我目前正在尝试将日期的格式从2010-01-11 00:00:00更改为2010年11月1日或2010年11月1日。当前2010-01-11 00:00:00是字符串格式。我曾尝试使用date函数进行强制,但它从未返回到Stata可以识别和排序的点。有人知道如何做到这一点吗?最好是在以后的问题中,您发布尝试过的代码,以及为什么它不适合您 也许这在你的情况下有效: clear all set more off *----- example data ----- set obs 1 gen d

我目前正在尝试将日期的格式从2010-01-11 00:00:00更改为2010年11月1日或2010年11月1日。当前2010-01-11 00:00:00是字符串格式。我曾尝试使用date函数进行强制,但它从未返回到Stata可以识别和排序的点。有人知道如何做到这一点吗?

最好是在以后的问题中,您发布尝试过的代码,以及为什么它不适合您

也许这在你的情况下有效:

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
请注意,我们从字符串类型转换为数字类型double,然后调整显示格式

请参阅帮助格式、帮助日期时间和帮助日期时间显示格式

另请阅读:

Stata技巧113:更改变量的格式:它的作用和意义 N.J.考克斯。2012 Stata杂志第12卷第4期。

如果您正在以2010-01-11 00:00:00 SQL格式摄取时间数据,则默认情况下,它将作为str23摄取到Stata中

如果您希望将其作为Stata日期格式进行操作,您可以尝试以下摄取的日期1。。。成为你的约会专栏

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' 
}
这需要输入多个日期,只需将列名替换为ingested_date_1 ingested_date_2等,并对其进行重新格式化,保留其“原始”名称即可

现在,日期是以stata识别的时间格式,以时钟的%tc为基础,这将按照您预期的时间意义进行排序,而不是按照未被识别的摄取字符串进行排序

此外,您现在可以将日期的显示格式重新设置为您喜欢的格式,或者可以轻松阅读,尽管这对日期操作没有影响,但在2010年11月1日查看的情况下,这只是显示的外观

正如罗伯托所说

格式输入日期%tcDD NN YY


你是说你摄取的文件格式是2010-01-11 00:00:00,作为字符串吗?嗨,是的,这是正确的!您好,非常感谢您的帖子,我做了一些类似的事情,但注意到它会为12日之后的日期值保留空白值,就像它返回2月1日至2月12日的值一样,但13日至31日的值是空的。你知道为什么会这样吗?谢谢你需要更具体一些。有点类似,可以有多种解释。这是要求您发布代码、结果和错误以及解释的原因之一。您可以编辑原始问题。我建议您这样做,并添加缺失的相关信息。一个简单的例子再现了你的问题。谢谢你的回答,我只是想知道摄入的日期1和摄入的日期2代表什么。当我通常执行foreach命令时,上面的sqltime将表示一个变量,并将inspected_date_1和inspected_date_2作为限制。如果我在2010-01-11 00:00:00格式中有一列日期名为dates,那么上面的日期会在哪里?谢谢您的列日期将被摄入\日期\ 1,并在命令中删除摄入\日期\ 2,我只是将其概括为两个日期字段。您正在重命名变量,然后再使用它们。在生成时,Stata无法找到本地sqltime中引用的变量。这将产生一个错误。Oops打字错误,需要使用一个虚拟将change@RobertoFerrer,改变了它