Trong PostgreSQL, clock_timestamp()
là một hàm thời gian không chuẩn SQL trả về ngày và giờ hiện tại.
Một lưu ý quan trọng của hàm này là kết quả của nó thay đổi trong suốt quá trình thực thi một câu lệnh. Do đó, bạn có thể nhận được một kết quả khác trong các phần khác nhau của câu lệnh nếu bạn gọi hàm nhiều lần trong một câu lệnh.
Cú pháp
Cú pháp đơn giản như sau:
clock_timestamp()
Vì vậy, nó không chấp nhận bất kỳ tham số nào.
Ví dụ
Đây là một ví dụ cơ bản để chứng minh.
SELECT clock_timestamp();
Kết quả:
2020-07-01 09:53:22.823731+10
Nhiều cuộc gọi
Dưới đây là một ví dụ cơ bản để chứng minh kết quả có thể khác nhau như thế nào khi bạn gọi hàm nhiều lần trong một câu lệnh SQL.
\x
SELECT
clock_timestamp(),
pg_sleep(5),
clock_timestamp(),
pg_sleep(3),
clock_timestamp();
Kết quả (sử dụng đầu ra dọc):
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
Ở đây, tôi đã sử dụng pg_sleep()
chức năng trì hoãn việc thực thi trong vài giây. Cuộc gọi đầu tiên trì hoãn việc thực thi trong 5 giây và cuộc gọi thứ hai trì hoãn việc thực thi trong 3 giây.
Chúng ta có thể thấy rằng mỗi lần clock_timestamp()
đã được gọi, thời gian thực tế hơi khác một chút. Điều này chủ yếu là do pg_sleep()
nhưng nó vẫn có thể khác nếu không có nó, tùy thuộc vào tốc độ chạy của truy vấn.
Đây lại là nó mà không có pg_sleep()
cuộc gọi.
SELECT
clock_timestamp(),
clock_timestamp(),
clock_timestamp();
Kết quả (sử dụng đầu ra dọc):
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
Những ví dụ này sử dụng đầu ra theo chiều dọc (thường được gọi là hiển thị mở rộng trong psql) để giúp đọc kết quả dễ dàng hơn.
Bạn có thể chuyển đổi hiển thị mở rộng trong psql với \x
.