如何获得 MySQL 毫秒,微秒

如何获得 MySQL 毫秒,微秒,第1张

经常有人问及:在 MySQL 中如何获得毫秒?于是就写篇日志总结下。

MySQL 较新的版本中(MySQL 605),也还没有产生微秒函数,now() 只能精确到秒。 MySQL 中也没有存储带有毫秒、微秒的日期时间类型。

但,奇怪的是 MySQL 已经有抽取(extract)微秒的函数。例如:

select microsecond('12:00:00123456'); -- 123456

select microsecond('1997-12-31 23:59:59000010'); -- 10

select extract(microsecond from '12:00:00123456'); -- 123456

select extract(microsecond from '1997-12-31 23:59:59000010'); -- 10

select date_format('1997-12-31 23:59:59000010', '%f'); -- 000010

尽管如此,想在 MySQL 获得毫秒、微秒还是要在应用层程序中想办法。假如在应用程序中获得包含微秒的时间:1997-12-31 23:59:59000010,在 MySQL 存放时,可以设计两个字段:c1 datetime, c2 mediumint,分别存放日期和微秒。为什么不采用 char 来存储呢?用 char 类型需要 26 bytes,而 datetime + mediumint 只有 11(8+3) 字节。

毫秒、微秒名词解释:

毫秒:millisecond -- 千分之一秒

微秒:microsecond -- 一百万分之一秒

1 秒 = 1000 毫秒;1 毫秒 = 1000 微秒

获得的值是微秒 microsecond。

比如025139300 ,有效数字是6位,正好符合1秒=1,000毫秒=1,000,000微秒

使用echo microtime(true);直接获得浮点值。

楼主测到一个035时差,可能是巧合正好在350毫秒之间。函数本身精确到微秒的。

一个微秒级的延时函数今天要用到一个微秒级的定时函数,到网上search下,找了几个都不能用,我晕,无奈,还是自己动手比较好,赶紧贴出来。

免得以后要用的时候又不知道那里去找,方便自己也方便大家^_^ 又避免重复发明轮子^_^

/

Created: 2006/09/02

FileName: tc

Author: Liu Qi

Purpose: 测试微秒级延时

/

#include <windowsh>

#include <timeh>

#include <stdioh>

ULONG GetTimeDis(struct tm first, struct tm second) //计算两次时间差

{

return abs((firsttm_hour 3600 + firsttm_min 60 + firsttm_sec)

- (secondtm_hour 3600 + secondtm_min 60 + secondtm_sec));

}

void Delay(ULONG ulMicroSeconds)

{

LARGE_INTEGER timeStop;

LARGE_INTEGER timeStart;

LARGE_INTEGER Freq;

ULONG ulTimeToWait;

if (!QueryPerformanceFrequency( &Freq ))

return;

ulTimeToWait = FreqQuadPart ulMicroSeconds / 1000 / 1000;

QueryPerformanceCounter ( &timeStart );

timeStop = timeStart;

while( timeStopQuadPart - timeStartQuadPart < ulTimeToWait )

{

QueryPerformanceCounter( &timeStop );

}

}

int main(void)

{

struct tm timeStart, timeEnd;

_getsystime(&timeStart);

Delay(1000 1000 3); //3秒

_getsystime(&timeEnd);

printf("用时:%d秒\n", GetTimeDis(timeStart, timeEnd));

return 0;

}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/12187982.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存