【问题标题】:Stata read date variable from MS SQLStata 从 MS SQL 读取日期变量
【发布时间】:2015-03-05 10:16:47
【问题描述】:

我通过 ODBC 将 Stata 连接到 SQL 数据库。

我的问题是 Stata 将日期变量读取为字符串。在 SQL 中,它们具有日期格式。

如何将 SQL 中的日期变量作为 Stata 中的日期导入?

【问题讨论】:

  • 您可以以任何您喜欢的形式将日期作为数字导入Stata。一个非常简单的例子是年。您可能需要在 Stata 中进行转换,但您提出的问题似乎部分是理解问题。更重要的是,我们需要具体的示例、您尝试过的代码等。例如,我对 Stata 中的日期了解很多,并且忘记了我对 SQL 的了解,所以要接触到像我这样的人,您需要准确说明 SQL 是如何成立的您感兴趣的日期类型。
  • 我刚刚用odbc load, table("data_table") 读取了表格,在SQL 中,格式只是日期。我主要担心的是:我在 Stata 中读取了多达 20 亿行。我想节省额外的时间将所有字符串转换回日期。 Stata 将日期显示为%10s
  • 正如我所说,我根本不懂 SQL,所以 SQL 对我来说毫无意义,尽管更重要的是它可能对其他人有所帮助。另外,您的问题是如何将日期导入 Stata,但您也明确表示您可以做到。我想你会发现Stata中的日期转换不会浪费在其他地方可以获得的时间。您是在导入每日日期、日期和时间还是其他内容?
  • @user3614882 显示您的日期在 stata 中的显示方式 .. 给我们一些示例,因为您需要使用适当的 stata 格式来理解这些字符串并将它们转换为 stata 格式.. 我有一个类似的要处理的问题,所以如果我们了解您正在处理的问题,我们可能会为您提供帮助
  • 通常,您必须添加 datestring 选项才能让 Stata 执行此操作。默认行为是即时转换日期。您能向我们展示您的odbc load 语句以及SQL 数据库中的日期格式信息吗?

标签: sql-server date format stata


【解决方案1】:

如果不知道您的日期格式,我们无法回答这个问题。

我遇到了类似的问题。如果我假设你的日期在

yyyy-mm-dd

格式,那么你需要这段代码(假设 v1 是在 Stata 中保存日期的变量)

 generate v2 = date(v1, "YMD")
format %td v2

帮助我理解使用格式的一种方法是在 Stata 中打印一些日期,以查看它们在 Stata 内部编码中的样子:例如:

display date("2013-08-14", "YMD")
display %td date("2013-08-14", "YMD")

现在,如果您想将数据转换为 Stata 格式,因为您遇到类型不匹配 r(109); Stata 出错,请执行以下代码行以正确的 Stata 日期格式获取数据:

    . gen str new   = string(value, "%10.0g")
    . gen long date = date(new, "YMD") 
    . format date %td
    . drop new 

【讨论】:

  • Stata 的 date() 函数如果(从 Stata 13 开始)使用记录在案的同义词 daily() 会更好理解。它产生数字 daily 日期(和 only 数字每日日期)。请注意,daily(string(value, "%10.0g"), "YMD") 应该可以正常工作,只要 value 包含像 20130814 这样的数字。生成然后删除的新变量的设备可能会更清晰但不是必需的。
  • 有趣的尼克。我不知道 Stata 中的 daily() 函数。我会看看。谢谢
猜你喜欢
  • 2014-10-04
  • 1970-01-01
  • 2021-05-16
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多