Как извлечь микросекунды или миллисекунды из текущего времени MySQL?

Я пытаюсь создать свою первую сохраненную функцию на MySQL. В этой функции я хочу вернуть метку времени текущей даты и времени с 3-мя микросекундными цифрами, например:YYYYMMDDHHMMSSZZZ

Я использую этот номер в своей базе данных для создания уникальных ключей для моих записей в автономном режиме, чтобы они несбой, когда мои системы объединяют базы данных с разных автономных серверов.

Так что моя первая попытка былаSELECT CAST(MICROSECOND(NOW()) AS CHAR(3));

Но он возвращает 0.

Если я попробуюSELECT CAST(MICROSECOND('2009-12-31 23:59:59.001210') AS CHAR(3));

Возвращает 121, как мне нужно.

Итак, как сказать MySQL, что я хочу знать микросекунды текущего времени?

РЕДАКТИРОВАТЬ:

Учти это:

CREATE FUNCTION CHAVE (pTable VARCHAR(32)) RETURNS CHAR(20)
BEGIN
    DECLARE vSigla CHAR(3);
    DECLARE vDateTime CHAR(14);
    DECLARE vMilli CHAR(3);
    DECLARE vKey CHAR(20);
    SET vSigla = (SELECT SIGLA FROM TABLELIST WHERE NOME = pTable);
    SET vDateTime = (SELECT CAST(LEFT(UTC_TIMESTAMP()+0, 14) AS CHAR(14)));
    SET vMilli = LPAD(FLOOR(RAND() * 1000), 3, '0');
    SET vKey = CONCAT(vSigla, vDateTime, vMilli);
    RETURN vKey;
END;

Результат:

INSERT INTO TABLEX (dateID, name) VALUES (CHAVE('TABLEX'), 'EASI');

Будет, из ЧЕВЫTABLEX»):

KEY20130320151159666

Где 666 будет случайным числом,но я бы хотел, чтобы это был реальный счет миллисекунд текущего времени, поэтому у меня нет возможности дублировать ключ.

Если бы я только мог использоватьSHOW COLUMNS FROM @TableName WHERE FIELD_NAME LIKE '%_ID' LIMIT 1 и вставить это в нединамический SELECT, чтобы получить миллисекунду последней записи этой таблицы ...

Ответы на вопрос(4)

Ваш ответ на вопрос