【问题标题】:Importing Dates into R from SQL Server从 SQL Server 将日期导入 R
【发布时间】:2016-01-07 21:04:06
【问题描述】:

我正在尝试查询 SQL Server 数据库以检查一个字段中的 MAX 日期,并选择第二天输入到另一个进程中。我可以查询数据库并拉回日期,但我无法将其转换为日期对象。

这是我尝试过的:

tmpMaxDate <- sqlQuery(dbhandle, 'select MAX([date]) + 1 from dbo.My_Data ')
tmpMaxDate

1 2016-01-02
IsDate(tmpMaxDate)
[1] FALSE

maxDate    <- as.Date(tmpMaxDate)
Error in as.Date.default(tmpMaxDate) : 
  do not know how to convert 'tmpMaxDate' to class “Date”
maxDate
NULL
IsDate(maxDate)
[1] FALSE


maxDate <- as.Date(tmpMaxDate, format = "%Y-%M-%D")
Error in as.Date.default(tmpMaxDate, format = "%Y-%M-%D") : 
  do not know how to convert 'tmpMaxDate' to class “Date”

IsDate(maxDate)
[1] FALSE
maxDate
NULL

我使用的包是 RODBC、chron、lubridate 和 RSQLserver 我认为我需要转换为日期对象才能使用 R 中 SQL Server 中的日期。

关于为什么我的约会不能转换有什么想法吗?我是否需要转换才能使用该日期来过滤 R 中的数据?

【问题讨论】:

  • class(tmpMaxDat) 显示什么?是data.frame 吗?您需要将字符串传递给as.Date

标签: sql-server r date


【解决方案1】:
DateVar <- sqlQuery(dbhandle,"SELECT CONVERT(varchar(10),GETDATE() + 1,101) as Date")
DateVar
NewDate <- as.Date(DateVar$Date, format = "%m/%d/%y")
NewDate

我认为我的诀窍是给日期响应一个列名,然后在转换中引用该列(作为转换所需的特定字符串值)名称。

class(NewDate)

将显示为“日期”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-03
    • 2015-04-03
    • 1970-01-01
    • 2012-08-05
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多