Date 更改日期的类型和格式,同时保留显示

Date 更改日期的类型和格式,同时保留显示,date,types,format,stata,Date,Types,Format,Stata,我试图在我的数据集中销毁一个类型为str9/%9s的日期变量,该变量的格式为DDMonYYYY(其中Mon是一个三个字母的月份缩写),我希望它保持当前的格式 我一直在对其他数据集执行egen newvarname=max(date),其中日期的类型为:int,格式为:%td,我希望能够将数据集中日期作为字符串的日期转换为相同的类型和格式,同时保留表单,因此,我可以执行相同的命令。不建议使用字符串类型的日期。最好将日期变量从字符串转换为数字 为此,您需要使用daily()函数,而不是destrin

我试图在我的数据集中销毁一个类型为str9/%9s的日期变量,该变量的格式为DDMonYYYY(其中Mon是一个三个字母的月份缩写),我希望它保持当前的格式


我一直在对其他数据集执行
egen newvarname=max(date)
,其中日期的类型为:int,格式为:%td,我希望能够将数据集中日期作为字符串的日期转换为相同的类型和格式,同时保留表单,因此,我可以执行相同的命令。

不建议使用字符串类型的日期。最好将日期变量从字符串转换为数字

为此,您需要使用
daily()
函数,而不是
destring
encode
命令(有关后者不合适的讨论,请参阅)

例如:

clear
set obs 2

generate date_string = ""
replace date_string = "29Oct2012" in 1
replace date_string = "14Jan2015" in 2

generate date_numeric = daily(date_string, "DMY")
list, abbreviate(20) noobs

  +----------------------------+
  | date_string   date_numeric |
  |----------------------------|
  |   29Oct2012          19295 |
  |   14Jan2015          20102 |
  +----------------------------+

format %tdDDMonCCYY date_numeric
list, abbreviate(20) noobs

  +----------------------------+
  | date_string   date_numeric |
  |----------------------------|
  |   29Oct2012      29Oct2012 |
  |   14Jan2015      14Jan2015 |
  +----------------------------+
然后,您可以根据需要使用
egen

egen date_max = max(date_numeric)
format %tdDDMonCCYY date_max
list, abbreviate(20) noobs

  +----------------------------------------+
  | date_string   date_numeric    date_max |
  |----------------------------------------|
  |   29Oct2012      29Oct2012   14Jan2015 |
  |   14Jan2015      14Jan2015   14Jan2015 |
  +----------------------------------------+
如果坚持将所有内容都作为字符串,则可以在以后使用
tostring
命令:

tostring date_max date_numeric, replace format("%tdddMonCCYY") force

如果您提供某种解决方案的尝试并指出您已经尝试了什么,您将进一步了解StackOverflow。欢迎使用StackOverflow!请阅读并始终使用Stata.com中的
dataex
命令提供。我想要所有的数字,所以这是完美的。谢谢你的帮助!