【问题标题】:How to convert sqlite dates to a date in R如何将sqlite日期转换为R中的日期
【发布时间】:2015-11-10 21:35:00
【问题描述】:

我正在使用一个 sqlite 数据库表。我已经使用 RSQLite 包将数据提取到 R 中。其中一列包含一个日期。 Sqlite 将其存储为实数,即自公元前 4714 年 11 月 24 日格林威治中午以来的天数。 (例如 1264896000)。关于如何将其转换为 R 中的有效日期的任何想法?我尝试了以下

as.POSIXct(1264896000,origin = "-4714-11-24")

但是,作为非标准形式的字符串,这不起作用。有什么想法吗?

【问题讨论】:

  • 我质疑您对 SQLite 日期起源的理解。最后的三个零表明这是自最近的起源以来的秒或毫秒,可能是 1970-01-01 的典型 POSIX 起源
  • 感谢您的帮助,我想我被列出上述日期的 SQLite 文档吓到了。 sqlite.org/datatype3.html
  • 该 SQLite 表显然存储为具有标准 POSIX 起源的整数(而不是实数)。如果它是一个实数,您可能需要使用 julian 和另一个来源作为附加参数。

标签: r sqlite lubridate


【解决方案1】:

我测试了我的理论,即您关于起源的说法不太可能。这些是 POSIX 日期时间(origin= 1970-01-01 和时间以秒为单位)的理论似乎得到了实验的支持。

> as.POSIXct(1264896000,origin = "1970-01-01")
[1] "2010-01-30 16:00:00 PST"

【讨论】:

  • 你也可以试试这个:library(sqldf); sqldf("SELECT datetime(1264896000, 'unixepoch') date")
  • 我现在正在从 SQLite3 读取日期时间,格式为例如“1495734240000”,即,显然以毫秒为单位。所以转换它的方式是as.POSIXct(datetime/1000, origin = "1970-01-01")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 2012-05-29
  • 2016-01-08
相关资源
最近更新 更多