是否有 Stata 函数可以删除 DateTime 变量中的日期?

Is there a Stata function to delete the date in a DateTime variable?

我有一个名为 assign1_submission 的日期时间变量(键入 doubleformat %tchh:MM:SS_AM)。我有另一个日期时间变量 time_due(类型 doubleformat %tchh:MM:SS_AM)。

gen double time_due = clock("12:00 PM", "hm")
format time_due %tchh:MM:SS_AM

在我从MS Excel导入的assign1_submission中,变量只包含一个时间。但是,在数据浏览器中,Stata 为条目附加了日期。

尽管只告诉 Stata 一个时间,但我的 time_due 变量在条目中有一个日期。

我想做的是删除两个变量中的日期,因为我想查看time_dueassign1_submission之间的时差。 所以,我尝试了以下代码:

replace assign1_submission = hh(assign1_submission)
replace time_due = hh(time_due)

gen time_difference = time_due - assign1_submission

根据 Stata:

hh(e_tc) Description: the hour corresponding to datetime e_tc (ms. since 01jan1960 00:00:00.000)

当运行这段代码:

replace assign1_submission = hh(assign1_submission)

Stata 忽略了之前的时间:所有内容都被覆盖为状态:12:00 AM,其中日期仍附在条目上。

有人可以帮忙删除 assign1_submissiontime_due 变量中的日期,以便我可以确定这两个变量之间的小时差吗?

Stata 中的日期时间是从 1960 年开始计算的,以毫秒 (ms) 为单位。您可以通过除以 24 * 60 * 60000(即 1 天的毫秒数)的余数来丢弃日期元素。

所指时间仍默认为1960年1月1日

clear 
set obs 1 
gen double datetime = clock("4 July 2020 18:00:00", "DMY hms")
format datetime %tc 
gen double time = mod(datetime, 24 * 60 * 60 * 1000)
format time %tcHH:MM:SS
l, noobs 

  +-------------------------------+
  |           datetime       time |
  |-------------------------------|
  | 04jul2020 18:00:00   18:00:00 |
  +-------------------------------+

否则很难遵循你的断言。 Stata 不会因为您在浏览器中查看而更改数据。您显示的每日日期与不同的变量有关。