C++获取mysql时间字段 用哪个函数

C++获取mysql时间字段 用哪个函数,第1张

11 获得当前日期+时间(date + time)函数:now()

除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:

current_timestamp() current_timestamp

localtime() localtime

localtimestamp() localtimestamp

这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。

12 获得当前日期+时间(date + time)函数:sysdate()

sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。

2 获得当前日期(date)函数:curdate()

其中,下面的两个日期函数等同于 curdate(): current_date(),current_date

3 获得当前时间(time)函数:curtime()

其中,下面的两个时间函数等同于 curtime():current_time(),current_time

4 获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp()

var date1=new Date();

// 执行代码

var date2=new Date();

var ms=date2getTime()-date1getTime() ; //时间差的毫秒数

1、在菜单栏的Tools->profile->Setup Profile Data Collection ;在出来的ProfileSetup 中选择新建,然后新建一个Configuration,再在右边的Activities中勾上Profilealll Function for Total Cycles;

2、然后在菜单栏选择Target->Debug Active Project; 最后在运行。

3 Tools->profile-> view functionprofile results即可看到结果:

下面介绍一下每个标签的含义:

Name:函数名

Calls:调用的次数

以下为不包含子函数的执行时间:

Excl Count Min: 最小消耗的时间

Excl Count Max:最大消耗的时间

Excl Count Average: 平均消耗的时间

ExclCount Total: 总共消耗的时间

以下包含子函数的执行时间

Incl Count Min: 最小消耗的时间

Incl Count Max:最大消耗的时间

InclCount Average: 平均消耗的时间

InclCount Total: 总共消耗的时间

这里的时间,其单位是“CPUCycles”,CPU的时钟周期。

例如:1GHz的CPU,每秒就有1G个CPUCycles

这个是windows里面常用来计算程序运行时间的函数;

DWORD dwStart = GetTickCount();

//这里运行你的程序代码

DWORD dwEnd = GetTickCount();

则(dwEnd-dwStart)就是你的程序运行时间, 以毫秒为单位

这个函数只精确到55ms,1个tick就是55ms。

2

timeGetTime()基本等于GetTickCount(),但是精度更高

DWORD dwStart = timeGetTime();

//这里运行你的程序代码

DWORD dwEnd = timeGetTime();

则(dwEnd-dwStart)就是你的程序运行时间, 以毫秒为单位

虽然返回的值单位应该是ms,但传说精度只有10ms。

3

用clock()函数,得到系统启动以后的毫秒级时间,然后除以CLOCKS_PER_SEC,就可以换成“秒”,标准c函数。

clock_t clock ( void );

#include <timeh>

clock_t t = clock();

long sec = t / CLOCKS_PER_SEC;

他是记录时钟周期的,实现看来不会很精确,需要试验验证;

4

#include<iostream>

#include<ctime>

using namespace std;

int main()

{

time_t begin,end;

begin=clock();

//这里加上你的代码

end=clock();

cout<<"runtime: "<<double(end-begin)/CLOCKS_PER_SEC<<endl;

}

5

unix时间相关,也是标准库的

这些在<timeh>

1timegm函数只是将struct tm结构转成time_t结构,不使用时区信息;

time_t timegm(struct tm tm);

2mktime使用时区信息

time_t mktime(struct tm tm);

timelocal 函数是GNU扩展的与posix函数mktime相当

time_t timelocal (struct tm tm);

3gmtime函数只是将time_t结构转成struct tm结构,不使用时区信息;

struct tm gmtime(const time_t clock);

4localtime使用时区信息

struct tm localtime(const time_t clock);

1time获取时间,stime设置时间

time_t t;

t = time(&t);

2stime其参数应该是GMT时间,根据本地时区设置为本地时间;

int stime(time_t tp)

3UTC=true 表示采用夏时制;

4文件的修改时间等信息全部采用GMT时间存放,不同的系统在得到修改时间后通过localtime转换成本地时间;

5设置时区推荐使用setup来设置;

6设置时区也可以先更变/etc/sysconfig/clock中的设置 再将ln -fs /usr/share/zoneinfo/xxxx/xxx /etc/localtime 才能重效

time_t只能表示68年的范围,即mktime只能返回1970-2038这一段范围的time_t

看看你的系统是否有time_t64,它能表示更大的时间范围

Window里面的一些不一样的

CTime MFC类,好像就是把timeh封了个类,没扩展

CTime t = GetCurrentTime();

SYSTEMTIME 结构包含毫秒信息

typedef struct _SYSTEMTIME {

WORD wYear;

WORD wMonth;

WORD wDayOfWeek;

WORD wDay;

WORD wHour;

WORD wMinute;

WORD wSecond;

WORD wMilliseconds;

} SYSTEMTIME, PSYSTEMTIME;

SYSTEMTIME t1;

GetSystemTime(&t1)

CTime curTime(t1);

WORD ms = t1wMilliseconds;

SYSTEMTIME sysTm;

::GetLocalTime(&sysTm);

在timeh中的_strtime() //只能在windows中用

char t[11];

_strtime(t);

puts(t);

6

下面是转的一个用汇编的精确计时方法

---------------------------------------------------------------------------------------

如何获得程序或者一段代码运行的时间?你可能说有专门的程序测试工具,确实,不过你也可以在程序中嵌入汇编代码来实现。

在Pentium的指令系统中有一条指令可以获得CPU内部64位计数器的值,我们可以通过代码两次获取该计数器的值而获得程序或代码运行的时钟周期数,进而通过你的cpu的频率算出一个时钟周期的时间,从而算出程序运行的确切时间。

我们通过指令TDSIC来获得cpu内部计数器的值,指令TDSIC返回值放在EDX:EAX中,其中EDX中存放64位寄存器中高32位的值,EAX存放第32位的值

下面看看实现的代码:

//用汇编实现获取一段代码运行的时间

#include<iostream>

using namespace std;

void GetClockNumber (long high, long low);

void GetRunTime();

int main()

{

long HighStart,LowStart,HighEnd,LowEnd;

long numhigh,numlow;

//获取代码运行开始时cpu内部计数器的值

__asm

{

RDTSC

mov HighStart, edx

mov LowStart, eax

}

for(int i= 0; i<100000; i++ )

{

for(int i= 0; i<100000; i++ )

{

}

}

//获取代码结束时cpu内部计数器的值,并减去初值

__asm

{

RDTSC

mov HighEnd, edx

Mov LowEnd, eax

;获取两次计数器值得差

sub eax, LowStart

cmp eax, 0 ; 如果低32的差为负则求返,因为第二次取得永远比第一次的大

jg L1

neg eax

jmp L2

L1: mov numlow, eax

L2: sbb edx, HighStart

mov numhigh, edx

}

//把两个计数器值之差放在一个64位的整形变量中

//先把高32位左移32位放在64的整形变量中,然后再加上低32位

__int64 timer =(numhigh<<32) + numlow;

//输出代码段运行的时钟周期数

//以频率11Gcpu为例,如果换计算机把其中的11改乘其它即可,因为相信大家的cpu都应该在1G以上 ^_^

cout<< (double) (timer /11/1000000000) << endl;

return 0;

}

这样通过一条简单的汇编指令就可以获得程序或一段代码的大概时间,不过并不能得到运行的确切时间,因为即使去掉中间的循环,程序也会有个运行时间,

因为在第一次取得计数器的值后,有两条汇编指令mov HighStart, edx mov LowStart, eax这两条指令当然也有运行时间 ,当然你可以减去这两条指令的运行时间(在11G的机子上是3e-8s),这样会更精确一点。

如果你要确切知道程序的运行时间,专业的测试软件肯定会更好一点,不过好像一般没有必要获取除非专门的要求的程序。

不过能DIY一个也是不错的,不管有没有,最起码你可以学到在VC++中如何嵌入汇编代码以及如何使用32位的寄存器,其实和16位的寄存器一样使用,将来64的也应该一样,只不过位数不同罢了

网上找的,对你应该有帮助。。。

给你一个程序,直接将你要验证的代码加到我注释的地方:

#include <stdioh>

__forceinline unsigned _int64 My_clock(void)

{

_asm _emit 0x0F

_asm _emit 0x31

}

unsigned _int64 Start(void) { return My_clock();} // 开始时间

unsigned _int64 Stop(unsigned _int64 m_start, unsigned _int64 m_overhead)

{return My_clock()-m_start - m_overhead; } // 停时间

void main()

{

unsigned _int64 m_start=0, m_overhead=0;

unsigned int N;

m_start = My_clock();

m_overhead = My_clock() - m_start - m_overhead;

m_start = My_clock(); // 正式开始

//测试程序段 Start

for(int t2=0;t2<8000;t2++){} //将你要测试耗时的代码放在这里,我这里随便写了一个

//测试程序段 End

N = Stop(m_start,m_overhead); // 获取耗时

printf("Time:%I64d us\n", N);

}

以上就是关于C++获取mysql时间字段 用哪个函数全部的内容,包括:C++获取mysql时间字段 用哪个函数、chrome 怎么看函数执行了多长时间、ccs5.5 怎么测试出某个函数的运行时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://www.54852.com/web/9646731.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存