Да. Это не что иное, как прошедшее время. Вы можете скопировать его, сохранив время начала и вычтя его из времени, когда запрос заканчивается. Как этот псевдокод.
start = Time.now
do_the_query
end = Time.now
elapsed_time = end - start
Копаясь в исходном коде mysql, это не что иное, как истекшее время часов.
Вот соответствующий код в client / mysql. cc.
static ulong start_timer(void) {
#if defined(_WIN32)
return clock();
#else
struct tms tms_tmp;
return times(&tms_tmp);
#endif
}
static void end_timer(ulong start_time, char *buff) {
nice_time((double)(start_timer() - start_time) / CLOCKS_PER_SEC, buff, true);
}
static void mysql_end_timer(ulong start_time, char *buff) {
buff[0] = ' ';
buff[1] = '(';
end_timer(start_time, buff + 2);
my_stpcpy(strend(buff), ")");
}
static int com_go(String *buffer, char *line MY_ATTRIBUTE((unused))) {
...
char time_buff[52 + 3 + 1]; /* time max + space&parens + NUL */
...
timer = start_timer();
executing_query = true;
error = mysql_real_query_for_lazy(buffer->ptr(), buffer->length());
...
if (verbose >= 3 || !opt_silent)
mysql_end_timer(timer, time_buff);
else
time_buff[0] = '\0';
Если вы не читаете C .. .
timer = start_timer();
получает текущее время из times
. mysql_real_query_for_lazy
выполняет запрос. mysql_end_timer(timer, time_buff)
вычитает текущее время из время начала и отображает его.