我正在尝试使用RMySQL从mariaDB中获取数据。其中一列名为delivery_date
,类型为DATETIME
。
将数据写入此表时,我使用格式为“YYYY-mm-dd HH:MM:SS”的字符日期。这种格式由DBMS识别,甚至可以将我的日期从CET转换为UTC时区。到现在为止还挺好。
现在,当我想从此表(或只是列delivery_date
)中获取数据时,我使用以下查询:
con <- dbConnect(RMySQL::MySQL(), group = 'group1',
unix.sock='/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock')
q <- dbSendQuery(con, "SELECT delivery_date FROM `id_transactions`")
dbFetch(q)
这导致
delivery_date
1 1970-01-01 00:59:59
2 1970-01-01 00:59:59
3 1970-01-01 00:59:59
4 1970-01-01 00:59:59
5 1970-01-01 00:59:59
6 1970-01-01 00:59:59
这是不正确的。在DBMS中,数据看起来很好:
知道这是一个错误还是我错过了什么?
更新:
事实证明,使用github的当前开发版本时会发生此错误。当在CRAN上切换到最新的稳定版本时,它可以正常工作。
如果它对您有所帮助:
我使用
将数据附加到表中dbWriteTable(con, 'id_transactions', x, append = T, row.names = NA)
其中data.table x
完全具有SQL表的形式。
CREATE TABLE:
CREATE TABLE `id_transactions` (
`market` text CHARACTER SET latin1,
`delivery_date` datetime DEFAULT NULL,
`delivery_hour` tinyint(6) DEFAULT NULL,
`delivery_quarter` tinyint(4) DEFAULT NULL,
`volume` double DEFAULT NULL,
`price` double DEFAULT NULL,
`marketarea_buy` text CHARACTER SET latin1,
`marketarea_sell` text CHARACTER SET latin1,
`timestamp` datetime DEFAULT NULL,
`id` bigint(20) DEFAULT NULL,
KEY `idx_delivery_date` (`delivery_date`),
KEY `idx_delivery_hour` (`delivery_hour`),
KEY `idx_delivery_quarter` (`delivery_quarter`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT