【发布时间】:2015-02-10 00:46:45
【问题描述】:
我有一个 SQL 数据库 (2012),我正试图通过 R (R Studio) 访问它。在 Enterprise Manager 中是这样的:
select top 5[date],value from dbo.history
1991-02-11 11.1591
1991-02-12 11.2
1991-02-13 11.3501
1991-02-14 11.37
1991-02-15 11.3002
但是,我从 R 中得到了:
sqlQuery(DF_CN,'select top 5 [date],value from dbo.history')
date value
1 0011-02-19 11.16
2 0012-02-19 11.20
3 0013-02-19 11.35
4 0014-02-19 11.37
5 0015-02-19 11.30
当我尝试从表中选择所有数据时,这就是我得到的
sqlQuery(DF_CN,'select * from dbo.history')
Error in charToDate(x) :
character string is not in a standard unambiguous format
这可能与 SQL server 中的 yyyy-mm-dd 默认格式有关,如果我使用 CONVERT,我可以更改它,但这看起来像一个 hack,SELECT * 不起作用。
我可以在 R 中做些什么来识别 SQL Server 日期吗?
本
这让我发疯——肯定有人以前见过——SQL Server 输出与 R 正在读取的内容之间存在明显的脱节。
我正在使用 RStudio 0.98.1091 和 R x64 3.1.2。 数据库服务器 2014 Microsoft SQL Server 管理工作室 12.0.2000.8 Microsoft 数据访问组件 (MDAC) 6.1.7601.17514 微软 MSXML 3.0 4.0 6.0 微软 Internet Explorer 9.10.9200.17148 微软 .NET 框架 4.0.30319.18444 操作系统 6.1.7601
用于 SQL Server 的 ODBC 驱动程序 11。
我的系统上的所有内容都是最新的。
[date] 列的类型为 DATE,现在为 DATETIME。我现在明白了;
sqlQuery(DF_CN,('select * from dbo.history')
Error in as.POSIXlt.character(x, tz, ...) :
character string is not in a standard unambiguous format
SQL 服务器设置和 R 设置之间似乎有些脱节。
【问题讨论】:
-
您是在 SQL 表中将日期存储为 DATETIME 值还是 VARCHAR 值?如果是后者,请考虑将它们更改为 DATETIME 值,这应该由 R 更好地处理。
-
日期在 SQL Server 数据库中存储为 DATETIME
标签: sql-server r date