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

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

Trong PostgreSQL, make_timestamptz() cho phép bạn tạo dấu thời gian với múi giờ từ các trường năm, tháng, ngày, giờ, phút và giây cũng như trường múi giờ tùy chọn.

Cú pháp

Hàm có cú pháp sau:

make_timestamptz(year int, month int, day int, hour int, min int, sec double precision, [ timezone text ])

year , monthday là các số nguyên đại diện cho năm, tháng và ngày trong ngày và hour là phần giờ, min là phần phút và sec là phần giây.

Giờ và phút được cung cấp dưới dạng số nguyên , giây được cung cấp dưới dạng độ chính xác kép .

Múi giờ timezone tùy chọn đối số dành cho múi giờ. Nếu nó không được chỉ định, múi giờ hiện tại sẽ được sử dụng.

Kết quả được trả về là thời gian theo múi giờ .

Ví dụ

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

SELECT make_timestamptz(1999, 03, 14, 10, 35, 12.15);

Kết quả:

1999-03-14 10:35:12.15+10

Trong trường hợp này, tôi không cung cấp múi giờ nên đã sử dụng múi giờ hiện tại.

Chúng tôi có thể xác minh loại trả lại bằng truy vấn sau.

SELECT pg_typeof(make_timestamptz(1999, 03, 14, 10, 35, 12.15));

Kết quả:

timestamp with time zone

pg_typeof() hàm trả về kiểu dữ liệu của đối số của nó và vì vậy tôi đã truyền make_timestamptz() như đối số.

Chỉ định múi giờ

Trong ví dụ này, tôi cung cấp múi giờ một cách rõ ràng.

SELECT make_timestamptz(1999, 03, 14, 10, 35, 12.15, 'Indian/Mauritius');

Kết quả:

1999-03-14 16:35:12.15+10

Đây là một ví dụ khác, nhưng với các giá trị múi giờ khác nhau.

\x
SELECT 
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACDT'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACST'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACT'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, '+01'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, '-01'),
  make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'NZ');

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

make_timestamptz | 1999-12-31 23:31:00+10
make_timestamptz | 2000-01-01 00:31:00+10
make_timestamptz | 2000-01-01 15:01:00+10
make_timestamptz | 2000-01-01 09:01:00+10
make_timestamptz | 2000-01-01 11:01:00+10
make_timestamptz | 1999-12-31 21:01:00+10

Trong ví dụ này, tôi đã sử dụng \x để cho phép hiển thị mở rộng (còn được gọi là "đầu ra dọc") nhằm giúp kết quả dễ đọc hơn.

Nhập \x bật / tắt màn hình mở rộng (tức là bật và tắt nó).

Xem Trả lại danh sách múi giờ được hỗ trợ bởi PostgreSQL để nhận danh sách múi giờ hợp lệ.

Ngoài phạm vi

Nếu bất kỳ đối số nào nằm ngoài phạm vi giá trị có thể có cho phần ngày của nó, bạn sẽ gặp lỗi "nằm ngoài phạm vi".

SELECT make_timestamptz(1999, 03, 32, 10, 35, 12.15);

Kết quả:

ERROR: date field value out of range: 1999-03-32

Trong trường hợp này, ngày là 32, nằm ngoài phạm vi và do đó, thông báo giải thích rằng giá trị trường ngày nằm ngoài phạm vi.

Nếu chỉ có giá trị trường thời gian nằm ngoài phạm vi, lỗi sẽ được xử lý tương ứng.

SELECT make_timestamptz(1999, 03, 30, 10, 61, 12.15);

Kết quả:

ERROR: time field value out of range: 10:61:12.15

Trong trường hợp này, minutes đối số là 61, nằm ngoài phạm vi.

Dấu thời gian không có múi giờ

Để tạo dấu thời gian không có múi giờ, hãy sử dụng make_timestamp() chức năng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:Cấp tất cả các quyền cho người dùng trên cơ sở dữ liệu PostgreSQL

  2. Cách chọn bản ghi từ 24 giờ qua bằng PostgreSQL

  3. Thêm ngày vào một ngày trong PostgreSQL

  4. Lỗi khi cài đặt psycopg2 ==2.6.2

  5. Tạo chỉ mục duy nhất một phần với sqlalchemy trên Postgres