Ple*_*rds 11 mysql datetime milliseconds
我正在尝试在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;
Run Code Online (Sandbox Code Playgroud)
的结果:
INSERT INTO TABLEX (dateID, name) VALUES (CHAVE('TABLEX'), 'EASI');
Run Code Online (Sandbox Code Playgroud)
将来自CHAVE('TABLEX'):
KEY20130320151159666
Run Code Online (Sandbox Code Playgroud)
666将是一个随机数,但我希望它是当前时间的实际毫秒数,所以我没有可能重复的密钥.
如果我只能使用SHOW COLUMNS FROM @TableName WHERE FIELD_NAME LIKE '%_ID' LIMIT 1并在非动态SELECT中插入它以获得该表的最后一条记录的毫秒数...
看一下MySQL所说的内容(http://dev.mysql.com/doc/refman/5.1/en/fractional-seconds.html):
However, when MySQL stores a value into a column of any temporal data type, it discards any fractional part and does not store it.
因此,您需要将其存储为日期值,而不是存储为简单的浮点值.
对于 MySQL 5.6
round(unix_timestamp() * 1000 + MICROSECOND(sysdate(6)) / 1000)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33162 次 |
| 最近记录: |