Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 将日期从%tm准确转换为stata中的日期_Date_Stata - Fatal编程技术网

Date 将日期从%tm准确转换为stata中的日期

Date 将日期从%tm准确转换为stata中的日期,date,stata,Date,Stata,在附加了几个数据集之后,我有了%tm格式的日期,即YYYYMM。我想将它们转换成一种形式,在这种形式中,我可以将月份和年份分开,以便按季度生成数据。然而,当我尝试将它们更改为其他日期格式时,所有年份都显示为1961年。尝试使用格式%tq时给出了不正确的数据,以及年(日期)和月(日期)函数。当我将它们转换为字符串时,它们显示为从300到20000的数字,但当使用格式%tm时,这些奇怪的数字会转换回显示正确的年份和月份。你知道发生了什么,我如何解决这个问题吗 您在这里提到了几个相关问题,但没有给出示

在附加了几个数据集之后,我有了
%tm
格式的日期,即YYYYMM。我想将它们转换成一种形式,在这种形式中,我可以将月份和年份分开,以便按季度生成数据。然而,当我尝试将它们更改为其他日期格式时,所有年份都显示为1961年。尝试使用
格式%tq
时给出了不正确的数据,以及
年(日期)
月(日期)
函数。当我将它们转换为字符串时,它们显示为从300到20000的数字,但当使用
格式%tm
时,这些奇怪的数字会转换回显示正确的年份和月份。你知道发生了什么,我如何解决这个问题吗

您在这里提到了几个相关问题,但没有给出示例来显示您使用的确切代码或实际数据。严格地说,这会使你的问题偏离主题,因为在你的问题中没有什么能像一个可复制的例子。不过,一些诊断是可能的

这里的关键谬误是

  • 指定特定日期显示格式可定义Stata日期

  • 因此,更改显示格式会更改Stata日期类型

绝对不是!例如,假设我有一个数字42。如果我为其指定日期格式
%td
%tm
%tq
,则会显示不同的日期,但最多只能显示一个正确的日期,因为除了显示格式外,我什么也没做任何更改:

. di %td 42
12feb1960

. di %tm 42
1963m7

. di %tq 42
1970q3
因此,在不更改值的情况下更改显示格式通常只是胡说八道

最重要的是,如果您有每月的日期,
year()
month()
如果没有额外的函数就无能为力,因为它们从每天的日期中提取年份和月份

这很棘手,但在
帮助日期和时间
中都有很好的文档记录,只是比大多数人想读的更详细,因为你必须浏览和跳过任何不适合你当前需要的内容

据我所知,简而言之,您的问题是将每月日期转换为季度日期,因此您不需要像您所设想的那样提取月份和年份,尽管这是一种方法

我会调用
dofm()
,然后调用
qofd()

这些功能的作用是更改(most)值,然后可以指定适当的显示格式

正如您应该看到的,这里的战略建议是使用
display
手动尝试解决方案

如果这偏离了目标,您可能需要提供真实的数据和代码详细信息,而不仅仅是在不完整的描述中提及您使用的内容

注意。对于大多数Stata用户来说,20000不是一个合理的每月日期,因为在未来的1600多年中:

. di %tm 20000
3626m9
有关未来问题的指导,请参阅和。
. di %tm 20000
3626m9