我正在使用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在使用时间戳like this one, which can cause a InnoDB crash划分表时仍然遇到一些麻烦。他们过去对timestamp with fractional seconds的行为做了一些更改。
按照Bjoern的建议,我向mysql跟踪器提交了一个错误(http://bugs.mysql.com/bug.php?id=66958)。这是他们的答案(对他们来说,这不是错误)
此问题对于MySQL 8和MariaDB 10仍然存在。