使用RMySQL从数据库中获取DATETIME数据

时间:2017-05-16 09:12:38

标签: mysql r mariadb rmysql

我正在尝试使用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中,数据看起来很好:

enter image description here

知道这是一个错误还是我错过了什么?

更新

事实证明,使用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

0 个答案:

没有答案
相关问题