R包RMySQL:Can';t无错误地将字符转换为VARCHAR MYSQL

R包RMySQL:Can';t无错误地将字符转换为VARCHAR MYSQL,r,R,因此,我使用RMySQL包来设置本地MYSQL服务器。我已经设置了一个表,但在某些数据转换类型上遇到了问题。特别是,我已将R中的日期类型转换为字符串,并使用以下查询测试将数据上载到MYSQL: INSERT INTO table1 VALUES( 2 , 1.356998403e+15, 747, 240, 2012-12-31, 3493, 0, -6.236852, 53.425327, -709, 747006, 40040, 4094, 0 ) 但是当我使用以下方法测试MYSQL表的输

因此,我使用RMySQL包来设置本地MYSQL服务器。我已经设置了一个表,但在某些数据转换类型上遇到了问题。特别是,我已将R中的日期类型转换为字符串,并使用以下查询测试将数据上载到MYSQL:

INSERT INTO table1 VALUES( 2 , 1.356998403e+15, 747, 240, 2012-12-31, 3493, 0, -6.236852, 53.425327, -709, 747006, 40040, 4094, 0 )
但是当我使用以下方法测试MYSQL表的输出时:

dbGetQuery(mydb,"SELECT * FROM table1;")
我得到以下输出(截断):

注意输入和输出中第5列(时间范围)之间的差异?“2012-12-31”变为“1969”!我试着输入一个日期,但是RMySQL命令给了我一个关于日期类型的错误,所以我试着把它转换成一个字符,只是为了得到其中的数据

有人知道这是怎么回事吗?我怎样才能让角色进入瓦查拉斯,它显示在R中

以下是表格设置:

dbSendQuery(mydb, "
  CREATE TABLE Table1 (
  TimestampID INT UNSIGNED NOT NULL AUTO_INCREMENT,
  Timestamp BIGINT UNSIGNED,
  LineID SMALLINT UNSIGNED,
  JourneyPatternID VARCHAR(8),
  TimeFrame VARCHAR (15),
  VehicleJourneyID INT UNSIGNED,
  Congestion BOOL,
  LonWGS84 NUMERIC(10,8),
  LatWGS84 NUMERIC(10,8),
  Delay INT,
  BlockID INT UNSIGNED,
  VehicleID INT UNSIGNED,
  StopID INT UNSIGNED,
  AtStop BOOL,
  PRIMARY KEY (TimestampID)
  );
")

所以这实际上有一个答案

您需要在INSERT命令中围绕“2012-12-31”值添加引号。应改为:

INSERT INTO table1 VALUES( 2 , 1.356998403e+15, 747, 240, '2012-12-31', 3493, 0, -6.236852, 53.425327, -709, 747006, 40040, 4094, 0 )

你好@Cormac85,欢迎来到。不幸的是,这是一个统计相关问题的网站。你的问题更适合姐妹网站。我已经投票决定结束你的问题,并将它迁移到(所以你不需要做任何事情)。我的错。我想,因为这是一个与R相关的问题,所以它最适合统计方面的问题。干杯看起来,
2012-12-31
被解析为“2012减去12减去31”,这可以解释为什么在第5列中会出现
1969
。在您的
INSERT
语句中使用
'2012-12-31'
(带单引号)而不是
2012-12-31
怎么样?哇,谢谢,就是这样!总是愚蠢的错误让我着迷:(
INSERT INTO table1 VALUES( 2 , 1.356998403e+15, 747, 240, '2012-12-31', 3493, 0, -6.236852, 53.425327, -709, 747006, 40040, 4094, 0 )