PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách statement_timestamp () hoạt động trong PostgreSQL

Trong PostgreSQL, statement_timestamp() hàm trả về ngày và giờ hiện tại (bao gồm cả độ lệch múi giờ), ở đầu câu lệnh hiện tại.

Hàm không chấp nhận bất kỳ tham số nào, vì vậy bạn không thể chỉ định độ chính xác của nó.

Ngoài ra, statement_timestamp() là một hàm không phải chuẩn SQL.

Cú pháp

Cú pháp như sau:

statement_timestamp()

Không có đối số nào được yêu cầu hoặc chấp nhận.

Ví dụ cơ bản

Đây là một ví dụ cơ bản để chứng minh.

SELECT statement_timestamp();

Kết quả:

2020-07-02 09:30:45.46903+10

Trong một giao dịch

Dưới đây là một ví dụ để chứng minh cách nó hoạt động trong một giao dịch.

BEGIN;
SELECT statement_timestamp();
SELECT pg_sleep(5);
SELECT statement_timestamp();
SELECT pg_sleep(5);
SELECT statement_timestamp();
COMMIT;

Đây là đầu ra đầy đủ trong thiết bị đầu cuối của tôi khi sử dụng psql:

postgres=# BEGIN;
BEGIN
postgres=# SELECT statement_timestamp();
      statement_timestamp      
-------------------------------
 2020-07-02 09:31:13.363128+10
(1 row)


postgres=# SELECT pg_sleep(5);
 pg_sleep 
----------
 
(1 row)


postgres=# SELECT statement_timestamp();
      statement_timestamp      
-------------------------------
 2020-07-02 09:31:18.424503+10
(1 row)


postgres=# SELECT pg_sleep(5);
 pg_sleep 
----------
 
(1 row)


postgres=# SELECT statement_timestamp();
      statement_timestamp      
-------------------------------
 2020-07-02 09:31:23.501539+10
(1 row)


postgres=# COMMIT;
COMMIT

Trong ví dụ này, tôi đã sử dụng pg_sleep() chức năng trì hoãn việc thực thi giữa mỗi câu lệnh.

Vì mỗi statement_timestamp() lệnh gọi nằm trong câu lệnh SQL của chính nó, dấu thời gian trả về khác với mỗi lệnh gọi.

Điều này trái ngược với transaction_timestamp() , cái nào thì không thay đổi với mỗi câu lệnh. Nó trả về dấu thời gian dựa trên thời gian bắt đầu của giao dịch.

Nhiều cuộc gọi trong một câu lệnh

Dưới đây là một ví dụ về những gì sẽ xảy ra nếu chúng ta kết hợp cả ba lệnh gọi hàm trong một câu lệnh SQL.

\x
SELECT 
  statement_timestamp(),
  pg_sleep(5),
  statement_timestamp(),
  pg_sleep(5),
  statement_timestamp();

Kết quả (sử dụng đầu ra dọc):

statement_timestamp | 2020-07-02 09:34:41.06911+10
pg_sleep            | 
statement_timestamp | 2020-07-02 09:34:41.06911+10
pg_sleep            | 
statement_timestamp | 2020-07-02 09:34:41.06911+10

Lần này, cả ba giá trị dấu thời gian đều giống hệt nhau, mặc dù pg_sleep() hàm được sử dụng để trì hoãn việc thực thi giữa mỗi lần gọi đến statement_timestamp() .

Điều này trái ngược với clock_timestamp() hàm, thay đổi ngay cả khi nó tiến triển thông qua câu lệnh (nếu được gọi nhiều lần trong câu lệnh).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails Resque worker không thành công với PGError:máy chủ đóng kết nối đột ngột

  2. Tổng quan về PostgreSQL Query Caching &Load Balancing

  3. Ký tự đại diện PostgreSQL LIKE cho bất kỳ danh sách từ nào

  4. Nhập tệp hình dạng trong postgresql trong Linux bằng pgadmin 4

  5. Làm cách nào để kết nối với PostgreSQL mà không chỉ định tên cơ sở dữ liệu?