В PostgreSQL, clock_timestamp()
е не-SQL-стандартна функция за време, която връща текущата дата и час.
Важно съображение за тази функция е, че нейният резултат се променя по време на изпълнението на оператор. Следователно можете да получите различен резултат в различни части на израза, ако извикате функцията няколко пъти в рамките на един израз.
Синтаксис
Синтаксисът е толкова прост, колкото става:
clock_timestamp()
Така че не приема никакви параметри.
Пример
Ето основен пример за демонстрация.
SELECT clock_timestamp();
Резултат:
2020-07-01 09:53:22.823731+10
Множество обаждания
Ето основен пример, за да демонстрирате как резултатите могат да се различават, когато извикате функцията няколко пъти в рамките на един SQL израз.
\x
SELECT
clock_timestamp(),
pg_sleep(5),
clock_timestamp(),
pg_sleep(3),
clock_timestamp();
Резултат (с помощта на вертикален изход):
clock_timestamp | 2020-07-01 09:58:29.744838+10 pg_sleep | clock_timestamp | 2020-07-01 09:58:34.813448+10 pg_sleep | clock_timestamp | 2020-07-01 09:58:37.859197+10
Тук използвах pg_sleep()
функция за забавяне на изпълнението за няколко секунди. Първото повикване забавя изпълнението за 5 секунди, а второто повикване забавя изпълнението за 3 секунди.
Можем да видим, че всеки път clock_timestamp()
беше наречен, действителното време беше малко по-различно. Това се дължи главно на pg_sleep()
функция, но все пак може да е различно без нея, в зависимост от това колко бързо се изпълнява заявката.
Ето го отново без pg_sleep()
обаждания.
SELECT
clock_timestamp(),
clock_timestamp(),
clock_timestamp();
Резултат (с помощта на вертикален изход):
clock_timestamp | 2020-07-01 10:03:10.828557+10 clock_timestamp | 2020-07-01 10:03:10.828558+10 clock_timestamp | 2020-07-01 10:03:10.828558+10
Тези примери използват вертикален изход (обикновено наричан разширен дисплей в psql), за да улеснят четенето на резултатите.
Можете да превключвате разширеното показване в psql с \x
.