2015-11-10 72 views
1

我正在使用sqlite数据库表。我使用RSQLite软件包将数据提取到R中。其中一列包含日期。 Sqlite将它存储为一个实数,这是中午4714年11月24日格林威治中午以来的天数。 (e.g.1264896000)。有关如何将其转换为R中的有效日期的任何想法?我尝试了以下内容如何将sqlite日期转换为R中的日期

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

但是,这不作为标准形式的字符串。有任何想法吗?

+3

我质疑你对SQLite日期起源的理解。最后的三个零表明这些是自最近的起源以来的秒或毫秒,可能是典型的POSIX起源1970-01-01 –

+0

感谢您的帮助,我想我被SQLite文档抛出,它列出了上述日期。 https://www.sqlite.org/datatype3.html – iantist

+0

该SQLite表显然存储为整数(而不是实数),它具有标准的POSIX来源。如果它是一个真实的数字,你可能需要使用'julian'作为另一个参数。 –

回答

2

我测试了我的理论,你对原点的要求不太可能。理论上这些是POSIX日期时间(起源= 1970-01-01和秒数)似乎支持实验。

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

你也可以试试这个:'library(sqldf); sqldf(“SELECT datetime(1264896000,'unixepoch')date”)' –

+0

我现在正在从SQLite3读取日期时间,格式是例如。 “1495734240000”,即明显地从原点以毫秒为单位。所以转换它的方式是'as.POSIXct(datetime/1000,origin =“1970-01-01”)' –