我有一个SQL数据库(2012),我试图通过R(R Studio)访问.从企业管理器这是它的样子:
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
Run Code Online (Sandbox Code Playgroud)
但是从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
Run Code Online (Sandbox Code Playgroud)
当我尝试从表中选择所有数据时,这就是我得到的
sqlQuery(DF_CN,'select * from dbo.history')
Error in charToDate(x) :
character string is not in a standard unambiguous format
Run Code Online (Sandbox Code Playgroud)
它可能是关于SQL服务器的yyyy-mm-dd默认格式的东西,如果我使用的话我可以更改CONVERT
,但这看起来像黑客而且SELECT *
不起作用.
RI中有什么东西可以识别SQL Server日期吗?
本
这让我疯了 - 当然有人已经看过这个 - 在SQL Server输出和R读取之间有明显的脱节.
我使用的是RStudio 0.98.1091和R x64 3.1.2.Sql Server 2014 Microsoft SQL Server Management Studio 12.0.2000.8 Microsoft数据访问组件(MDAC)6.1.7601.17514 Microsoft MSXML 3.0 4.0 6.0 Microsoft Internet Explorer 9.10.9200.17148 Microsoft .NET Framework 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
Run Code Online (Sandbox Code Playgroud)
看起来SQL服务器设置和R设置之间存在一些脱节.
小智 11
我通过使用as.is
参数来解决这个问题:
sqlQuery(DF_CN,'select * from dbo.history',as.is=T)
Run Code Online (Sandbox Code Playgroud)
然后直接在R中投射我需要的值.
我已经解决了。
驱动程序设置为 SQL Server Native Client 11.0 ODBC 设置 -Use regional settings when outputting currency, numbers, dates and times
关闭。
我认为 SQL Server 对区域设置有自己的想法,而不是 windows 提供的内容,造成了很大的混乱。
归档时间: |
|
查看次数: |
3271 次 |
最近记录: |