powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Точность времени
7 сообщений из 7, страница 1 из 1
Точность времени
    #39190124
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с такой проблемой.
В документации сказано что для типа данных timestamp точность может быть определена до 6 знака после запятой включительно, т.е. до микросекунд.
Функции которые возвращают timestamp, например statement_timestamp(), имеют три знака после запятой.
Когда явно указываешь точность до 6 или пытаешься получить микросекунды - имеешь в 3-х младших разрядах всегда 0.
Например:
Код: sql
1.
select EXTRACT(MICROSECONDS FROM statement_timestamp()::timestamptz(6))



Результат - 52655000.

Вопрос. Каким образом, можно увидеть микросекунды отличные от нулей?

Postgres - 9.3.5 (64р), Windows.

Спасибо.
...
Рейтинг: 0 / 0
Точность времени
    #39190144
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trotВопрос. Каким образом, можно увидеть микросекунды отличные от нулей?
Занести их в поле самостоятельно.
...
Рейтинг: 0 / 0
Точность времени
    #39190155
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

можно ещё с выни слезть

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
---Linux---
select EXTRACT(MICROSECONDS FROM statement_timestamp()::timestamptz(6))
	,EXTRACT(MICROSECONDS FROM statement_timestamp())
	,EXTRACT(MICROSECONDS FROM clock_timestamp())
	,version()
----------
35414786;35414786;35414919;'PostgreSQL 9.3.6 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52), 64-bit'

-------Win---------

select EXTRACT(MICROSECONDS FROM statement_timestamp()::timestamptz(6))
	,EXTRACT(MICROSECONDS FROM statement_timestamp())
	,EXTRACT(MICROSECONDS FROM clock_timestamp())
	,version()
----------
43458000;43458000;43458000;'PostgreSQL 9.4.1, compiled by Visual C++ build 1800, 32-bit'

...
Рейтинг: 0 / 0
Точность времени
    #39190157
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trot,
Вроде не всегда нули в трех младших разрядах.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
postgres=# select EXTRACT(MICROSECONDS FROM statement_timestamp()::timestamptz(6));
 date_part 
-----------
   8372396
(1 row)

postgres=# \echo :VERSION
PostgreSQL 9.4.4 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4, 64-bit
...
Рейтинг: 0 / 0
Точность времени
    #39192384
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитал внимательно release notes для версии 9.5 и увидел вот такую строчку:
Allow higher-precision time stamp resolution on Windows 8, Windows Server 2012, and later Windows systems (Craig Ringer)

Проверили на windows10 и pg9.5 - и вот результат:
Код: sql
1.
2.
3.
4.
postgres=# select EXTRACT(MICROSECONDS FROM statement_timestamp()::timestamptz(6));
 date_part
-----------
  27417771
...
Рейтинг: 0 / 0
Точность времени
    #39192409
Фотография grufos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trot,

В release notes для версии 9.5 есть вот такая строчка:
Allow higher-precision time stamp resolution on Windows 8, Windows Server 2012, and later Windows systems (Craig Ringer)

Проверил на windows 7 и 9.5 - и вот результат:
postgres=# select EXTRACT(MICROSECONDS FROM statement_timestamp()::timestamptz(6));
date_part
-----------
27417771
...
Рейтинг: 0 / 0
Точность времени
    #39192592
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Традиционные "тики" в винде имеют точность 3 миллисекунды. Нетрадиционные появились очень давно, но в популярных библиотеках долгое время популярностью не пользовались из-за нестабильности результатов.
https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx QPC support in Windows versions

QPC was introduced in Windows 2000 and Windows XP and has evolved to take advantage of improvements in the hardware platform and processors. Here we describe the characteristics of QPC on different Windows versions to help you maintain software that runs on those Windows versions.

Windows XP and Windows 2000
QPC is available on Windows XP and Windows 2000 and works well on most systems. However, some hardware systems' BIOS didn't indicate the hardware CPU characteristics correctly (a non-invariant TSC), and some multi-core or multi-processor systems used processors with TSCs that couldn't be synchronized across cores. Systems with flawed firmware that run these versions of Windows might not provide the same QPC reading on different cores if they used the TSC as the basis for QPC.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Точность времени
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]