Mysql 5.6时间戳分区(以微秒为单位)

问题描述 投票:2回答:3

我正在使用mysql 5.6。我对这种可能性特别感兴趣:DATETIME或TIMESTAMP值可以包含尾随的小数秒部分,精度最高为微秒(6位数)。

我想使用这样的时间戳对表进行分区。

示例:

CREATE TABLE `VALUE_BIS` (
  `TSTAMP` timestamp(3) NOT NULL,
  `ATTRIBUTE_ID` int(11) NOT NULL,
  `VAL` int(11) unsigned NOT NULL,
  PRIMARY KEY (`ATTRIBUTE_ID`,`TSTAMP`)
)  PARTITION BY RANGE (UNIX_TIMESTAMP(TSTAMP))
     (PARTITION p_s18 VALUES LESS THAN (UNIX_TIMESTAMP('2012-09-18 00:00:00')),
     PARTITION p_s19 VALUES LESS THAN (UNIX_TIMESTAMP('2012-09-19 00:00:00')),
     PARTITION p_Max VALUES LESS THAN (UNIX_TIMESTAMP('2020-09-26 00:00:00' )));

==>错误1491(HY000):PARTITION函数返回错误的类型

*我认为它是正常的,因为它返回的unixtimestamp_seconds.microseconds不是整数*

如果加上毫秒,则>]

PARTITION p_s18 VALUES LESS THAN (UNIX_TIMESTAMP('2012-09-18 00:00:00.000')

==>错误1697(HY000):分区'p_s18'的VALUES值必须具有INT类型

与以前一样的故事

如果我更改了tstamp列的定义并且不使用毫秒

`TSTAMP` timestamp

==>它工作得很好,但是我不会存储毫秒,也不是我想要的。

任何想法?

我正在使用mysql 5.6。我对这种可能性特别感兴趣:DATETIME或TIMESTAMP值可以包含尾随的小数秒部分,精度最高为微秒(6位数)。...

mysql database-partitioning
3个回答
3
投票

MySQL在使用时间戳like this one, which can cause a InnoDB crash划分表时仍然遇到一些麻烦。他们过去对timestamp with fractional seconds的行为做了一些更改。


0
投票

按照Bjoern的建议,我向mysql跟踪器提交了一个错误(http://bugs.mysql.com/bug.php?id=66958)。这是他们的答案(对他们来说,这不是错误)


0
投票

此问题对于MySQL 8和MariaDB 10仍然存在。

© www.soinside.com 2019 - 2024. All rights reserved.