【问题标题】:Calculating datediff in days on Python / SQL Server / Stata在 Python / SQL Server / Stata 上以天为单位计算 datediff
【发布时间】:2021-04-21 13:50:05
【问题描述】:

我想创建一个名为 days 的新列,用于计算每个不同用户的日期差异。

例如,不同用户 x1 的天数从 x1 的最小日期开始,天数看起来像 ..

天 = 1, 2,3,4,5,6,...

对数据中的每个不同用户执行此操作的最佳方法是什么?

如图所示,每个不同的用户在数据集中有不同的日期长度。

任何使用 SQL Server、Python 或 Stata 的解决方案?

提前致谢。

【问题讨论】:

  • Python 和 SQL 是完全不同的语言......但是,DATEDIFF 是 SQL 有什么问题?它甚至在你的标题中?

标签: python sql-server stata


【解决方案1】:

这是一个 Stata 解决方案,假设您将日期作为字符串导入:

* GENERATE SAMPLE DATA
    clear
    set obs 2
    gen user_i = _n
    expand 10
    gen month = runiformint(1,12)
    gen day = runiformint(1,28) if inlist(month,2)
    replace day = runiformint(1,31) if inlist(month,1,3,5,7,8,10,12)
    replace day = runiformint(1,30) if mi(day)
    gen e_date = "2019" + "-" + (2 - strlen(string(month)))*"0" + string(month) + "-" + (2 - strlen(string(day)))*"0" + string(day)
    drop month day

* calculate days
    gen date = date(e_date, "YMD")
    format date %td
    bysort user_i (date): gen days_from_min = date-date[1]

话虽如此,在 MSSQL 或当前存放您的数据的任何地方,肯定有一种方法可以很容易地做到这一点。

【讨论】:

  • 天哪,先生,您拯救了我的一天 :) 非常感谢,我真的很感激
  • 太棒了!因此,根据您的数据如何读入 Stata,唯一重要的是最后一行。
猜你喜欢
  • 2019-08-27
  • 2015-02-10
  • 1970-01-01
  • 2016-05-05
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-29
相关资源
最近更新 更多