Postgresql 9.0.23 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 8. Kiểu dữ liệu | NEXT |
PostgreSQLHỗ trợ đầy đủ tập hợpSQLkèo bóng đá c1 và giờ Các loại, được hiển thị trongBảng 8-9. Các hoạt động có sẵn trên các loại dữ liệu này được mô tả trongPhần 9.9.
Bảng 8-9. Các loại kèo bóng đá c1/giờ
tên | Kích thước lưu trữ | Mô tả | giá trị thấp | giá trị cao | Độ phân giải |
---|---|---|---|---|---|
dấu thời kèo bóng đá c1 [(P)] [Không có múi giờ ] | 8 byte | cả kèo bóng đá c1 và giờ (không có múi giờ) | 4713 bc | 294276 AD | 1 microsecond / 14 chữ số |
dấu thời kèo bóng đá c1 [(P)] với múi giờ | 8 byte | cả kèo bóng đá c1 và giờ, với múi giờ | 4713 bc | 294276 AD | 1 microsecond / 14 chữ số |
kèo bóng đá c1 | 4 byte | kèo bóng đá c1 (không có thời gian trong kèo bóng đá c1) | 4713 bc | 5874897 AD | 1 kèo bóng đá c1 |
Thời kèo bóng đá c1 [(12662_12665)] [Không có múi giờ ] | 8 byte | Thời gian trong kèo bóng đá c1 (không có kèo bóng đá c1) | 00:00:00 | 24:00:00 | 1 microsecond / 14 chữ số |
Thời kèo bóng đá c1 [(P)] với múi giờ | 12 byte | Chỉ thời gian trong kèo bóng đá c1, với múi giờ | 00: 00: 00+1459 | 24:00:00-1459 | 1 microsecond / 14 chữ số |
Khoảng [Trường] [(P)] | 16 byte | Khoảng thời kèo bóng đá c1 | -178000000 năm | 178000000 năm | 1 microsecond / 14 chữ số |
Lưu ý:Tiêu chuẩn SQL yêu cầu viết chỉDấu thời kèo bóng đá c1Hãy tương đương vớidấu thời kèo bóng đá c1 không có múi giờvàPostgreSQLtôn vinh hành vi đó. (Phát hành trước 7.3 đã coi nó làdấu thời kèo bóng đá c1 với múi giờ.)
Thời kèo bóng đá c1, Dấu thời kèo bóng đá c1,, VàKhoảngChấp nhận độ chính xác tùy chọn giá trịPtrong đó chỉ định Số chữ số phân số được giữ lại trong trường giây. Qua Mặc định, không có ràng buộc rõ ràng về độ chính xác. Cho phép phạm vi củaPlà từ 0 đến 6 chodấu thời kèo bóng đá c1vàKhoảngTYPE.
Lưu ý:KhiDấu thời kèo bóng đá c1Giá trị được lưu trữ dưới dạng số nguyên tám byte (hiện là mặc định), độ chính xác microsecond có sẵn trong toàn bộ phạm vi của giá trị. KhiDấu thời kèo bóng đá c1Giá trị là thay vào đó được lưu trữ dưới dạng số điểm nổi chính xác kép (A A tùy chọn biên dịch không dùng nữa), giới hạn hiệu quả của Độ chính xác có thể nhỏ hơn 6.dấu thời kèo bóng đá c1Giá trị được lưu trữ dưới dạng giây trước hoặc Sau nửa đêm 2000-01-01. KhiDấu thời kèo bóng đá c1Giá trị được triển khai bằng cách sử dụng Số điểm nổi, độ chính xác micro giây đạt được cho kèo bóng đá c1 trong vòng một vài năm là 2000-01-01, nhưng độ chính xác suy thoái cho kèo bóng đá c1 xa hơn. Lưu ý rằng sử dụng Datetimes điểm nổi cho phép phạm vi lớn hơnTimestampGiá trị được biểu diễn so với hiển thị Trên: Từ 4713 trước Công nguyên đến 5874897 AD.
Tùy chọn thời kèo bóng đá c1 biên dịch tương tự cũng xác định xemthời kèo bóng đá c1vàKhoảngGiá trị được lưu trữ dưới dạng số điểm nổi hoặc tám byte số nguyên. Trong trường hợp nổi, lớnKhoảnggiá trị suy giảm độ chính xác theo kích thước của khoảng thời kèo bóng đá c1 tăng.
chothời kèo bóng đá c1Các loại, phạm vi được phép củaPlà từ 0 đến 6 khi tám byte Bộ lưu trữ số nguyên được sử dụng hoặc từ 0 đến 10 khi nổi Lưu trữ được sử dụng.
TheKhoảngLoại có thêm tùy chọn, đó là hạn chế tập hợp các trường được lưu trữ bằng cách viết Một trong những cụm từ này:
Năm THÁNG NGÀY GIỜ PHÚT THỨ HAI Năm này sang tháng khác kèo bóng đá c1 này đến giờ kèo bóng đá c1 này sang phút khác kèo bóng đá c1 thứ hai Giờ đến phút Giờ đến thứ hai Phút đến thứ hai
Lưu ý rằng nếu cả haiTrườngvàPđược chỉ định,TrườngPhải bao gồmthứ hai, vì độ chính xác chỉ áp dụng cho giây.
loạiThời kèo bóng đá c1 với múi giờđược xác định theo tiêu chuẩn SQL, nhưng định nghĩa thể hiện các thuộc tính dẫn đến tính hữu dụng đáng ngờ. Trong hầu hết các trường hợp, sự kết hợp củakèo bóng đá c1, Thời kèo bóng đá c1, dấu thời kèo bóng đá c1 không có múi giờvàdấu thời kèo bóng đá c1 với múi giờsẽ cung cấp hoàn chỉnh Phạm vi chức năng kèo bóng đá c1/thời gian được yêu cầu bởi bất kỳ ứng dụng nào.
Các loạiAbstimevàRelimelà các loại chính xác thấp hơn được sử dụng trong nội bộ. Bạn không nản lòng khi sử dụng các loại này trong ứng dụng; Những loại bên trong này có thể biến mất trong một tương lai giải phóng.
Đầu vào kèo bóng đá c1 và giờ được chấp nhận trong hầu hết mọi hợp lý Định dạng, bao gồm ISO 8601,SQL-CompitiT, truyền thốngPostgres, và những người khác. Đối với một số định dạng, Đặt hàng kèo bóng đá c1, tháng và năm đầu vào kèo bóng đá c1 là mơ hồ và có sự hỗ trợ để chỉ định thứ tự dự kiến của chúng Cánh đồng. ĐặtDatestyletham số đếnmdyđể chọn Giải thích hàng tháng năm,DMYđến Chọn cách giải thích năm tháng, hoặcYMDĐể chọn giải thích trong một tháng năm.
PostgreSQLlinh hoạt hơn Trong kèo bóng đá c1 xử lý/thời gian đầu vào so vớiSQLYêu cầu tiêu chuẩn. Nhìn thấyPhụ lục BĐể phân tích cú pháp chính xác Quy tắc đầu vào kèo bóng đá c1/giờ và cho các trường văn bản được công nhận bao gồm các tháng, kèo bóng đá c1 trong tuần và múi giờ.
Hãy nhớ rằng bất kỳ đầu vào kèo bóng đá c1 hoặc thời gian nào cũng cần Kèm theo trong các trích dẫn đơn, như chuỗi văn bản. Tham khảoPhần 4.1.2.7Để biết thêm thông tin.SQLYêu cầu cú pháp sau
loại[(P)] 'giá trị'
WHEREPlà một tùy chọn Đặc tả chính xác cho số chữ số phân số Trong trường giây. Độ chính xác có thể được chỉ định choThời kèo bóng đá c1, Dấu thời kèo bóng đá c1vàKhoảngCác loại. Các giá trị được phép là đã đề cập ở trên. Nếu không có độ chính xác nào được chỉ định trong một hằng số đặc điểm kỹ thuật, nó mặc định là độ chính xác của nghĩa đen giá trị.
Bảng 8-10Hiển thị một số đầu vào có thể chokèo bóng đá c1loại.
Bảng 8-10. Đầu vào kèo bóng đá c1
Ví dụ | Mô tả |
---|---|
1999-01-08 | ISO 8601; kèo bóng đá c1 8 tháng 1 ở bất kỳ chế độ nào (được đề xuất định dạng) |
kèo bóng đá c1 8 tháng 1 năm 1999 | không rõ ràng trong bất kỳDatestyleChế độ nhập |
1/8/1999 | kèo bóng đá c1 8 tháng 1 trongmdychế độ; kèo bóng đá c1 1 tháng 8 trongDMYMode |
1/18/1999 | 18 tháng 1 trongmdychế độ; bị từ chối trong các chế độ khác |
01/02/03 | kèo bóng đá c1 2 tháng 1 năm 2003 trongmdychế độ; kèo bóng đá c1 1 tháng 2 năm 2003 trongDMYchế độ; kèo bóng đá c1 3 tháng 2 năm 2001 trongYMDMode |
1999-JAN-08 | kèo bóng đá c1 8 tháng 1 ở bất kỳ chế độ nào |
Jan-08-1999 | kèo bóng đá c1 8 tháng 1 ở bất kỳ chế độ nào |
08-Jan-1999 | kèo bóng đá c1 8 tháng 1 ở bất kỳ chế độ nào |
99-JAN-08 | kèo bóng đá c1 8 tháng 1 trongYMDchế độ, Lỗi khác |
08-Jan-99 | kèo bóng đá c1 8 tháng 1, ngoại trừ lỗi trongYMDMode |
Jan-08-99 | kèo bóng đá c1 8 tháng 1, ngoại trừ lỗi trongYMDMode |
19990108 | ISO 8601; kèo bóng đá c1 8 tháng 1 năm 1999 ở bất kỳ chế độ nào |
990108 | ISO 8601; kèo bóng đá c1 8 tháng 1 năm 1999 ở bất kỳ chế độ nào |
1999.008 | năm và kèo bóng đá c1 trong năm |
J2451187 | kèo bóng đá c1 Julian |
kèo bóng đá c1 8 tháng 1, 99 trước Công nguyên | năm 99 trước Công nguyên |
Các loại thời gian của kèo bóng đá c1 làThời kèo bóng đá c1 [ (P)] Không có múi giờvàThời kèo bóng đá c1 [(P)] với múi giờ. thời kèo bóng đá c1Một mình tương đương vớiThời kèo bóng đá c1 không có múi giờ.
Đầu vào hợp lệ cho các loại này bao gồm một thời gian trong kèo bóng đá c1 theo sau là một múi giờ tùy chọn. (Nhìn thấyBảng 8-11vàBảng 8-12.) Nếu một múi giờ được chỉ định trong đầu vào choThời kèo bóng đá c1 không có múi giờ, nó âm thầm bỏ qua. Bạn cũng có thể chỉ định một kèo bóng đá c1 nhưng nó sẽ bị bỏ qua, ngoại trừ khi bạn sử dụng tên múi giờ liên quan đến Quy tắc vẫy sáng ban kèo bóng đá c1, chẳng hạn nhưAmerica/new_york. Trong trường hợp này chỉ định cần thiết kèo bóng đá c1 để xác định xem tiêu chuẩn hay Áp dụng thời gian sáng ban kèo bóng đá c1. Múi giờ thích hợp Offset được ghi lại trongThời kèo bóng đá c1 theo thời kèo bóng đá c1 vùngGiá trị.
Bảng 8-11. Đầu vào thời kèo bóng đá c1
Ví dụ | Mô tả |
---|---|
04:05:06.789 | ISO 8601 |
04:05:06 | ISO 8601 |
04:05 | ISO 8601 |
040506 | ISO 8601 |
04: 05 AM | giống như 04:05; AM không ảnh hưởng đến giá trị |
04: 05 PM | giống như 16:05; Giờ đầu vào phải là <= 12 |
04:05:06.789-8 | ISO 8601 |
04:05:06-08:00 | ISO 8601 |
04:05-08:00 | ISO 8601 |
040506-08 | ISO 8601 |
04: 05: 06 PST | Múi giờ được chỉ định bởi viết tắt |
2003-04-12 04:05:06 America/new_york | Múi giờ được chỉ định bởi tên đầy đủ |
Bảng 8-12. Đầu vào múi giờ
Ví dụ | Mô tả |
---|---|
PST | Viết tắt (cho thời kèo bóng đá c1 tiêu chuẩn Thái Bình Dương) |
America/new_york | Tên múi giờ đầy đủ |
PST8PDT | Đặc tả múi giờ theo kiểu POSIX |
-8:00 | Offset ISO-8601 cho PST |
-800 | iso-8601 Offset cho PST |
-8 | iso-8601 Offset cho PST |
Zulu | Viết tắt quân sự cho UTC |
Z | dạng ngắn củaZulu |
Tham khảoPhần 8.5.3Để biết thêm thông tin về cách chỉ định các múi giờ.
Đầu vào hợp lệ cho các loại tem thời gian bao gồm sự kết hợp của một kèo bóng đá c1 và một thời gian, tiếp theo là một tùy chọn múi giờ, theo sau là một tùy chọnADhoặcBC. (Cách khác,AD/BCcó thể xuất hiện trước múi giờ, nhưng cái này không phải là thứ tự ưa thích.) Vì vậy:
1999-01-08 04:05:06
và:
1999-01-08 04:05:06 -8:00
là giá trị hợp lệ, theo dõiISO8601 Tiêu chuẩn. Ngoài ra, Định dạng chung:
8 tháng 1 04:05:06 1999 PST
được hỗ trợ.
TheSQLTiêu chuẩn khác biệtDấu thời kèo bóng đá c1 không có thời kèo bóng đá c1 vùngvàdấu thời kèo bóng đá c1 với múi giờnghĩa đen bởi sự hiện diện của A"+"hoặc"-"Biểu tượng và múi giờ bù đắp sau thời kèo bóng đá c1. Do đó, theo tiêu chuẩn,
Timestamp '2004-10-19 10:23:54'
là mộtdấu thời kèo bóng đá c1 không có múi giờ,, trong khi
Timestamp '2004-10-19 10: 23: 54+02'
là mộtdấu thời kèo bóng đá c1 với múi giờ. PostgreSQLKhông bao giờ kiểm tra nội dung của một chuỗi theo nghĩa đen trước khi xác định loại của nó, và do đó sẽ coi cả hai điều trên làdấu thời kèo bóng đá c1 không có múi giờ. Để đảm bảo rằng một nghĩa đen được coi làdấu thời kèo bóng đá c1 theo thời kèo bóng đá c1 vùng, cho nó loại rõ ràng chính xác:
dấu thời kèo bóng đá c1 với múi giờ '2004-10-19 10: 23: 54+02'
Trong một nghĩa đen đã được xác định làdấu thời kèo bóng đá c1 không có múi giờ, PostgreSQLSẽ âm thầm bỏ qua bất cứ lúc nào chỉ định khu vực. Nghĩa là, giá trị kết quả được lấy từ các trường kèo bóng đá c1/giờ trong giá trị đầu vào và không được điều chỉnh cho múi giờ.
chodấu thời kèo bóng đá c1 với múi giờ, The giá trị được lưu trữ bên trong luôn luôn ở UTC (phổ quát Thời kèo bóng đá c1 phối hợp, theo truyền thống được gọi là thời kèo bóng đá c1 trung bình của Greenwich,GMT). Giá trị đầu vào mà có múi giờ rõ ràng được chỉ định được chuyển đổi thành UTC bằng cách sử dụng độ lệch thích hợp cho múi giờ đó. Nếu không có múi giờ là đã nêu trong chuỗi đầu vào, sau đó nó được giả định là trong múi giờ được chỉ định bởi hệ thốngtimezoneTham số và được chuyển đổi thành UTC bằng cách sử dụng phần bù chotimezonekhu vực.
Khi Adấu thời kèo bóng đá c1 với múi giờGiá trị là đầu ra, nó luôn được chuyển đổi từ UTC sang hiện hànhtimezoneVùng và hiển thị như giờ địa phương trong khu vực đó. Để xem thời kèo bóng đá c1 ở một thời điểm khác vùng, một trong hai thay đổitimezonehoặc sử dụng Thetại múi giờXây dựng (xemPhần 9.9.3).
Chuyển đổi giữadấu thời kèo bóng đá c1 không có múi giờvàdấu thời kèo bóng đá c1 theo thời kèo bóng đá c1 vùngThông thường giả sử rằngdấu thời kèo bóng đá c1 không có múi giờGiá trị nên được lấy hoặc được đưa ra dưới dạngtimezonegiờ địa phương. Một khác Múi giờ có thể được chỉ định để chuyển đổi bằng cách sử dụngtại múi giờ.
PostgreSQLHỗ trợ Một số giá trị đầu vào kèo bóng đá c1/thời gian đặc biệt để thuận tiện, vì hiển thị trongBảng 8-13. Các giá trịVô cựcvà-Infinityđược thể hiện đặc biệt bên trong hệ thống và sẽ được hiển thị không thay đổi; Nhưng Những người khác chỉ đơn giản là những tốc ký không có ý nghĩa được chuyển đổi thành giá trị kèo bóng đá c1/thời gian thông thường khi đọc. (TRONG cụ thể,Bây giờvà các chuỗi liên quan được chuyển đổi thành một giá trị thời kèo bóng đá c1 cụ thể ngay khi chúng là Đọc.) Tất cả các giá trị này cần được đặt trong đơn Báo giá khi được sử dụng làm hằng số trong các lệnh SQL.
Bảng 8-13. Đầu vào kèo bóng đá c1/giờ đặc biệt
Chuỗi nhập | Các loại hợp lệ | Mô tả |
---|---|---|
Epoch | kèo bóng đá c1, Timestamp | 1970-01-01 00: 00: 00+00 (Thời kèo bóng đá c1 hệ thống UNIX không) |
Vô cực | kèo bóng đá c1, Timestamp | muộn hơn tất cả các tem thời kèo bóng đá c1 khác |
-Infinity | kèo bóng đá c1, Timestamp | sớm hơn tất cả các tem thời kèo bóng đá c1 khác |
Bây giờ | kèo bóng đá c1, thời kèo bóng đá c1, Timestamp | Thời kèo bóng đá c1 bắt đầu giao dịch hiện tại |
hôm nay | kèo bóng đá c1, Dấu thời kèo bóng đá c1 | Midnight hôm nay |
kèo bóng đá c1 mai | kèo bóng đá c1, Dấu thời kèo bóng đá c1 | Nửa đêm kèo bóng đá c1 mai |
kèo bóng đá c1 hôm qua | kèo bóng đá c1, Timestamp | Nửa đêm hôm qua |
Allballs | Thời kèo bóng đá c1 | 00: 00: 00.00 UTC |
sau đâySQL-Các hàm tương thích cũng có thể được sử dụng Để có được giá trị thời kèo bóng đá c1 hiện tại cho dữ liệu tương ứng kiểu:current_date, current_time, current_timestamp, địa phương, LocalTimeStamp. Bốn người sau chấp nhận một Thông số kỹ thuật chính xác phụ thuộc tùy chọn. (Nhìn thấyPhần 9.9.4.) Lưu ý rằng đây là các chức năng SQL và làkhôngĐược công nhận trong Chuỗi đầu vào dữ liệu.
Định dạng đầu ra của các loại kèo bóng đá c1/thời gian có thể được đặt thành một trong bốn kiểu ISO 8601,SQL(Ingres), truyền thốngPostgres(UNIXkèo bóng đá c1Định dạng) hoặc tiếng Đức. Mặc định là TheISOĐịnh dạng. (TheSQLTiêu chuẩn yêu cầu Sử dụng định dạng ISO 8601. Tên của"SQL"Định dạng đầu ra là một tai nạn lịch sử.)Bảng 8-14Hiển thị các ví dụ về từng kiểu đầu ra. Đầu ra củakèo bóng đá c1vàthời kèo bóng đá c1Loại tất nhiên chỉ là phần hoặc phần thời kèo bóng đá c1 theo Ví dụ đã cho.
Bảng 8-14. Kiểu đầu ra kèo bóng đá c1/thời gian
Đặc tả kiểu | Mô tả | Ví dụ |
---|---|---|
ISO | ISO 8601/SQL Standard | 1997-12-17 07:37:16-08 |
SQL | Phong cách truyền thống | 12/17/1997 07: 37: 16.00 PST |
Postgres | Kiểu gốc | Thứ tư 17 tháng 12 07:37:16 1997 PST |
Đức | Phong cách khu vực | 17.12.1997 07: 37: 16.00 PST |
trongSQLvà Postgres Kiểu, kèo bóng đá c1 xuất hiện trước tháng nếu đặt hàng trường DMY đã được được chỉ định, nếu không, tháng xuất hiện trước kèo bóng đá c1. (Nhìn thấyPhần 8.5.1Để biết cách cài đặt này cũng ảnh hưởng đến việc giải thích giá trị đầu vào.)Bảng 8-15Hiển thị một ví dụ.
Bảng 8-15. kèo bóng đá c1 đặt hàng quy ước
DatestyleCài đặt | Đặt hàng đầu vào | đầu ra ví dụ |
---|---|---|
SQL, DMY | kèo bóng đá c1/tháng/năm | 17/12/1997 15: 37: 16.00 CET |
SQL, MDY | tháng/kèo bóng đá c1/năm | 12/17/1997 07: 37: 16.00 PST |
Postgres, DMY | kèo bóng đá c1/tháng/năm | Thứ tư 17 tháng 12 07:37:16 1997 PST |
Kiểu kèo bóng đá c1/giờ có thể được chọn bởi người dùng bằng cách sử dụngĐặt Datestylelệnh, TheDatestyletham số trongPostgreSql.confTệp cấu hình hoặcPGDatestyleBiến môi trường trên máy chủ hoặc máy khách. Các định dạng
chức năngto_char
(xemPhần 9.8) cũng có sẵn
như một cách linh hoạt hơn để định dạng đầu ra kèo bóng đá c1/thời gian.
Các múi giờ và quy ước vùng thời gian, bị ảnh hưởng bởi Các quyết định chính trị, không chỉ hình học trái đất. Múi giờ xung quanh thế giới đã trở nên hơi tiêu chuẩn hóa trong những năm 1900, nhưng tiếp tục dễ bị thay đổi tùy ý, đặc biệt là với Tôn trọng các quy tắc sáng ban kèo bóng đá c1.PostgreSQLSử dụng IANA được sử dụng rộng rãi (Olson) Cơ sở dữ liệu múi giờ để biết thông tin về lịch sử Quy tắc múi giờ. Đối với thời kèo bóng đá c1 trong tương lai, giả định là rằng các quy tắc mới nhất được biết đến cho một múi giờ nhất định sẽ tiếp tục được quan sát vô thời hạn trong tương lai.
PostgreSQLnỗ lực Tương thích vớiSQLĐịnh nghĩa tiêu chuẩn cho việc sử dụng điển hình. Tuy nhiên,SQLTiêu chuẩn có hỗn hợp lẻ của các loại kèo bóng đá c1 và thời gian và khả năng. Hai vấn đề rõ ràng là:
mặc dùkèo bóng đá c1Loại không thể có một múi giờ liên quan,thời kèo bóng đá c1Loại có thể. Múi giờ trong thế giới thực có ít ý nghĩa trừ khi liên kết với một kèo bóng đá c1 cũng như một thời gian, vì Offset có thể thay đổi trong năm với thời gian tiết kiệm ánh sáng ban kèo bóng đá c1 ranh giới.
Múi giờ mặc định được chỉ định là một số không đổi Offset từUTC. Nó là do đó không thể thích nghi với thời gian tiết kiệm ánh sáng ban kèo bóng đá c1 khi thực hiện số học kèo bóng đá c1/giờ quaDSTranh giới.
Để giải quyết những khó khăn này, chúng tôi khuyên bạn nên sử dụng kèo bóng đá c1/giờ Các loại chứa cả kèo bóng đá c1 và thời gian khi sử dụng múi giờ. Chúng tôi LÀMkhôngĐề xuất sử dụng loạiThời kèo bóng đá c1 với múi giờ(mặc dù nó được hỗ trợ bởiPostgreSQLcho các ứng dụng kế thừa và cho Tuân thủSQLtiêu chuẩn).PostgreSQLGiả sử Múi giờ địa phương của bạn cho bất kỳ loại nào chỉ chứa kèo bóng đá c1 hoặc thời gian.
Tất cả các kèo bóng đá c1 và thời gian nhận biết múi giờ được lưu trữ nội bộ trongUTC. Chúng được chuyển đổi thành giờ địa phương trong khu vực được chỉ định bởitimezoneTham số cấu hình trước khi được hiển thị cho khách hàng.
POSTGRESQLCho phép bạn Chỉ định các múi giờ ở ba dạng khác nhau:
Ví dụ, một tên múi giờ đầy đủAmerica/new_york. Múi giờ được công nhận Tên được liệt kê trongpg_timezone_namesXem (xemPhần 45.60).POSTGRESQLSử dụng dữ liệu múi giờ IANA được sử dụng rộng rãi cho mục đích này, vì vậy cùng tên múi giờ cũng được công nhận bởi nhiều thứ khác phần mềm.
Ví dụ, một bản viết tắt múi giờPST. Một đặc điểm kỹ thuật như vậy chỉ định nghĩa một bù đặc biệt từ UTC, trái ngược với múi giờ toàn thời gian Tên có thể ngụ ý một tập hợp tiết kiệm ánh sáng ban kèo bóng đá c1 Quy tắc chuyển tiếp là tốt. Các chữ viết tắt được công nhận được liệt kê trongpg_timezone_abbrevsXem (xemPhần 45.59). Bạn Không thể đặt tham số cấu hìnhtimezonehoặclog_timezoneViết tắt múi giờ, nhưng bạn có thể sử dụng chữ viết tắt Trong các giá trị đầu vào kèo bóng đá c1/thời gian và vớitại múi giờtoán tử.
Ngoài các tên và chữ viết tắt múi giờ,PostgreSQLsẽ chấp nhận Thông số kỹ thuật múi giờ theo phong cách POSIX của biểu mẫuSTDOffsethoặcSTDOffsetDST, trong đóSTDlà viết tắt của khu vực,Offsetlà một phần bù số Trong giờ phía tây từ UTC vàDSTVùng viết tắt, được cho là đứng trước một giờ trước phần bù đã cho. Ví dụ: nếuest5edtchưa phải là vùng được công nhận tên, nó sẽ được chấp nhận và sẽ có chức năng Tương đương với thời gian ở Bờ Đông Hoa Kỳ. Khi a Tên khu vực vòm sáng kèo bóng đá c1 có mặt, nó được cho là được sử dụng theo quá trình chuyển đổi sáng ban kèo bóng đá c1 Các quy tắc được sử dụng trong cơ sở dữ liệu của IANA múi giờPosixrulesmục nhập. Trong một tiêu chuẩnPostgreSQLCài đặt,Posixrulesgiống nhưHoa Kỳ/Đông, để theo phong cách Posix Thông số kỹ thuật múi giờ tuân theo các quy tắc tiết kiệm ánh sáng ban kèo bóng đá c1 của Hoa Kỳ. Nếu cần, bạn có thể điều chỉnh hành vi này bằng cách thay thếPosixrulesTệp.
Tóm lại, đây là sự khác biệt giữa viết tắt và Tên đầy đủ: Chữ viết tắt đại diện cho một phần bù cụ thể từ UTC, trong khi nhiều tên đầy đủ ngụ ý một cách sáng sủa ánh sáng ban kèo bóng đá c1 Quy tắc thời gian, và vì vậy có hai lần bù UTC có thể. Ví dụ,2014-06-04 12:00 Mỹ/New_Yorkđại diện cho buổi trưa giờ địa phương ở New York, mà đối với điều này kèo bóng đá c1 đặc biệt là thời gian ban kèo bóng đá c1 phía đông (UTC-4). Vì thế2014-06-04 12:00 EDTChỉ định điều đó đồng kèo bóng đá c1 ngay lập tức. Nhưng2014-06-04 12:00 EstChỉ định Giờ chuẩn miền Đông (UTC-5), Bất kể tiết kiệm ánh sáng ban kèo bóng đá c1 có hiệu lực hay không Vào kèo bóng đá c1 đó.
Để làm phức tạp vấn đề, một số khu vực pháp lý đã sử dụng giống nhau chữ viết tắt múi giờ có nghĩa là các phạm vi khác nhau của UTC tại thời kèo bóng đá c1 khác nhau; Ví dụ, trong MoscowMSKcó nghĩa là UTC+3 trong một số năm và UTC+4 trong người khác.POSTGRESQLdiễn giải Những viết tắt như vậy theo bất cứ điều gì họ có nghĩa là (hoặc đã có gần đây nhất có nghĩa là) vào kèo bóng đá c1 quy định; Nhưng, như vớiestVí dụ ở trên, đây không phải là nhất thiết giống như thời gian dân sự địa phương vào kèo bóng đá c1 đó.
Một người nên cảnh giác rằng tính năng múi giờ kiểu POSIX có thể dẫn đến âm thầm chấp nhận đầu vào không có thật, vì không có Kiểm tra tính hợp lý của các chữ viết tắt khu vực. Vì ví dụ,Đặt thời kèo bóng đá c1 thành foobar0Will làm việc, để lại hệ thống một cách hiệu quả bằng cách sử dụng một Chữ viết tắt cho UTC. Một vấn đề khác cần ghi nhớ là trong Tên múi giờ Posix, độ lệch dương được sử dụng cho các vị tríTâycủa Greenwich. Ở mọi nơi khác,POSTGRESQL48687_48765Eastcủa Greenwich.
Trong mọi trường hợp, tên và chữ viết tắt là được công nhận trường hợp không nhạy cảm. (Đây là một sự thay đổi từPOSTGRESQLPhiên bản trước 8.2, nhạy cảm trường hợp trong một số bối cảnh nhưng không người khác.)
Không có tên múi giờ cũng như viết tắt máy chủ; Chúng được lấy từ các tệp cấu hình được lưu trữ dưới.../chia sẻ/timezone/và.../chia sẻ/TimeZonesets/của Thư mục cài đặt (xemPhần B.3).
ThetimezoneTham số cấu hình có thể được đặt trong tệpPostgreSql.confhoặc trong bất kỳ cái nào khác Các cách tiêu chuẩn được mô tả trongChương 18. Ngoài ra còn có một số Những cách đặc biệt để đặt nó:
nếutimezonekhông được chỉ định trongPostgreSql.confhoặc như một máy chủ Tùy chọn dòng lệnh, máy chủ cố gắng sử dụng giá trị củaTZBiến môi trường như múi giờ mặc định. Nếu nhưTZkhông được xác định hoặc không phải là bất kỳ tên múi giờ nào được biết đếnPostgreSQL, máy chủ cố gắng xác định thời kèo bóng đá c1 mặc định của hệ điều hành Vùng bằng cách kiểm tra hành vi của chức năng thư viện Clocaltime (). Múi giờ mặc định được chọn là trận đấu gần nhất giữaPostgreSQLSúi thời kèo bóng đá c1 đã biết. (Những cái này Các quy tắc cũng được sử dụng để chọn giá trị mặc định củalog_timezone,, Nếu không được chỉ định.)
TheSQLlệnhĐặt múi giờĐặt múi giờ cho phiên. Đây là một cách đánh vần thay thế củaĐặt thời kèo bóng đá c1 thànhvới nhiều hơn Cú pháp tương thích SQL-spec.
ThePGTZBiến môi trường là Được sử dụng bởilibpqKhách hàng đến Gửi AĐặt múi giờlệnh đến máy chủ khi kết nối.
KhoảngGiá trị có thể được viết bằng cách sử dụng Cú pháp dài dòng sau:
[@]Số lượng Đơn vị[Số lượng Đơn vị...] [Hướng]
WHERESố lượnglà một số (có thể đã ký);Đơn vịlàmicrosecond, Millisecond, thứ hai, phút, giờ, kèo bóng đá c1, tuần, tháng, năm, Decade, Century, Thiên niên kỷ, hoặc Các chữ viết tắt hoặc số nhiều của các đơn vị này;Hướngcó thểAGOhoặc trống. Dấu hiệu tại (@) là tiếng ồn tùy chọn. Số lượng của Các đơn vị khác nhau được thêm vào hoàn toàn với dấu hiệu thích hợp kế toán.AGOphủ nhận tất cả Cánh đồng. Cú pháp này cũng được sử dụng cho đầu ra khoảng, nếuIntercalStyleđược đặt thànhpostgres_verbose.
Số lượng kèo bóng đá c1, giờ, phút và giây có thể được chỉ định mà không có dấu hiệu đơn vị rõ ràng. Ví dụ,'1 12:59:10'được đọc giống như'1 kèo bóng đá c1 12 giờ 59 phút 10 giây'. Cũng, Một sự kết hợp giữa năm và tháng có thể được chỉ định với một dấu gạch ngang; Ví dụ'200-10'được đọc giống nhau BẰNG'200 năm 10 tháng'. (Những cái này Các hình thức ngắn hơn trên thực tế là những hình thức duy nhất được cho phép bởiSQLTiêu chuẩn và được sử dụng cho đầu ra khiIntervalStyleđược đặt ĐẾNSQL_STANDARD.)
Giá trị khoảng thời kèo bóng đá c1 cũng có thể được viết dưới dạng ISO 8601 thời kèo bóng đá c1 khoảng thời kèo bóng đá c1, sử dụng"Định dạng với người thiết kế "của tiêu chuẩn Phần 4.4.3.2 hoặc"Định dạng thay thế"của phần 4.4.3.3. Định dạng với người chỉ định trông như thế này:
PSố lượng Đơn vị[ Số lượng Đơn vị...] [T [ Số lượng Đơn vị...]]
Chuỗi phải bắt đầu bằng mộtP, và có thể bao gồm mộtTgiới thiệu Các đơn vị thời gian trong kèo bóng đá c1. Các chữ viết tắt đơn vị có sẵn được đưa ra TRONGBảng 8-16. Các đơn vị có thể bị bỏ qua và có thể được chỉ định trong bất kỳ Đặt hàng, nhưng các đơn vị nhỏ hơn một kèo bóng đá c1 phải xuất hiện sauT. Cụ thể, ý nghĩa củaMphụ thuộc vào việc nó là trước hay sau đóT.
Bảng 8-16. Đơn vị khoảng thời kèo bóng đá c1 ISO 8601 viết tắt
viết tắt | có nghĩa là |
---|---|
y | năm |
M | tháng (trong phần kèo bóng đá c1) |
W | tuần |
D | kèo bóng đá c1 |
H | giờ |
M | phút (trong phần thời kèo bóng đá c1) |
S | giây |
ở định dạng thay thế:
P [ năm-tháng-kèo bóng đá c1 ] [Tgiờ:phút:giây ]
Chuỗi phải bắt đầu bằngPvà ATTách các phần kèo bóng đá c1 và thời gian của khoảng thời gian. Các giá trị được đưa ra dưới dạng số tương tự như ISO 8601 kèo bóng đá c1.
Khi viết hằng số khoảng bằngTrườngĐặc điểm kỹ thuật hoặc khi gán một Chuỗi vào một cột khoảng thời kèo bóng đá c1 được xác định vớiTrườngĐặc điểm kỹ thuật, giải thích số lượng không được đánh dấu phụ thuộc vàoTrường. Ví dụKhoảng '1' nămđược đọc là 1 năm, trong khiKhoảng '1'Có nghĩa là 1 giây. Cũng, Giá trị trường"sang phải"của Trường ít có ý nghĩa nhất được phép bởitrườngĐặc điểm kỹ thuật im lặng loại bỏ. Ví dụ: ViếtKhoảng '1 kèo bóng đá c1 2:03:04 'Giờ đến phútdẫn đến việc bỏ rơi Trường thứ hai, nhưng không phải trường kèo bóng đá c1.
theoSQLTiêu chuẩn Tất cả các trường có giá trị khoảng phải có cùng dấu hiệu, vì vậy một dấu hiệu tiêu cực hàng đầu áp dụng cho tất cả các trường; vì Ví dụ Dấu âm trong khoảng thời kèo bóng đá c1'-1 2:03:04'Áp dụng cho cả hai kèo bóng đá c1 và giờ/phút/phần thứ hai.POSTGRESQLcho phép các trường có các dấu hiệu khác nhau và theo truyền thống đối xử với từng trường trong biểu diễn văn bản như được ký một cách độc lập, để giờ/phút/phần thứ hai được coi là tích cực trong ví dụ này. Nếu nhưIntervalStyleđược đặt thànhSQL_STANDARDSau đó, một dấu hiệu hàng đầu được xem xét để áp dụng cho tất cả các trường (nhưng chỉ khi không có dấu hiệu bổ sung xuất hiện). Nếu không thì truyền thốngPostgreSQLGiải thích được sử dụng. ĐẾN Tránh sự mơ hồ, nên đính kèm một dấu hiệu rõ ràng mỗi trường nếu bất kỳ trường nào là âm.
Nội bộKhoảngGiá trị được lưu trữ
như tháng, kèo bóng đá c1 và giây. Điều này được thực hiện bởi vì số
kèo bóng đá c1 trong một tháng thay đổi, và một kèo bóng đá c1 có thể có 23 hoặc 25 giờ nếu
Một điều chỉnh thời gian tiết kiệm ánh sáng ban kèo bóng đá c1 có liên quan. Các tháng và
Các trường kèo bóng đá c1 là số nguyên trong khi trường thứ hai có thể lưu trữ
Phân số. Bởi vì khoảng thời gian thường được tạo ra từ không đổi
chuỗi hoặcTimestampphép trừ, this
Phương pháp lưu trữ hoạt động tốt trong hầu hết các trường hợp. Chức năngJustify_Days
vàJustify_Hours
Có sẵn để điều chỉnh
kèo bóng đá c1 và giờ tràn ra phạm vi bình thường của họ.
ở định dạng đầu vào dài dòng và trong một số trường của nhiều hơn Các định dạng đầu vào nhỏ gọn, giá trị trường có thể có các phần phân số; Ví dụ'1,5 tuần'hoặc'01: 02: 03,45 '. Đầu vào như vậy được chuyển đổi thành Số tháng, kèo bóng đá c1 và giây thích hợp để lưu trữ. Khi điều này sẽ dẫn đến một số tháng của các tháng hoặc kèo bóng đá c1, phân số được thêm vào các trường bậc dưới bằng cách sử dụng Các yếu tố chuyển đổi 1 tháng = 30 kèo bóng đá c1 và 1 kèo bóng đá c1 = 24 giờ. Vì ví dụ,'1.5 tháng'trở thành 1 tháng và 15 kèo bóng đá c1. Chỉ vài giây sẽ được hiển thị dưới dạng phân số đầu ra.
Bảng 8-17Hiển thị một số ví dụ về hợp lệKhoảngĐầu vào.
Bảng 8-17. Đầu vào khoảng
Ví dụ | Mô tả |
---|---|
1-2 | Định dạng tiêu chuẩn SQL: 1 năm 2 tháng |
3 4:05:06 | Định dạng tiêu chuẩn SQL: 3 kèo bóng đá c1 4 giờ 5 phút 6 giây |
1 năm 2 tháng 3 kèo bóng đá c1 4 giờ 5 phút 6 giây | Định dạng Postgres truyền thống: 1 năm 2 tháng 3 kèo bóng đá c1 4 giờ 5 phút 6 giây |
P1Y2M3DT4H5M6S | ISO 8601"Định dạng với người thiết kế ": Ý nghĩa tương tự như trên |
P0001-02-03T04: 05: 06 | ISO 8601"Thay thế định dạng": Ý nghĩa tương tự như trên |
Định dạng đầu ra của loại khoảng thời kèo bóng đá c1 Bốn kiểuSQL_STANDARD, Postgres, Postgres_verbosehoặcISO_8601, Sử dụng lệnhĐặt khoảng thời kèo bóng đá c1. Mặc định làPostgresĐịnh dạng.Bảng 8-18Hiển thị các ví dụ về từng kiểu đầu ra.
TheSQL_STANDARDPhong cách sản xuất đầu ra phù hợp với thông số kỹ thuật của tiêu chuẩn SQL cho khoảng thời gian theo nghĩa đen, nếu giá trị khoảng thời gian đáp ứng Hạn chế của Standard (chỉ có một tháng hoặc thời gian ban kèo bóng đá c1 Chỉ, không có sự pha trộn của các thành phần tích cực và tiêu cực). Nếu không thì sản lượng trông giống như một tháng năm tiêu chuẩn chuỗi theo sau là một chuỗi theo nghĩa đen ban kèo bóng đá c1, với các dấu hiệu được thêm vào để phân loại các khoảng thời gian ký kết hỗn hợp.
Đầu ra củaPostgresPhong cách khớp với đầu ra củaPostgreSQLphát hành trước 8.4 khiDatestyleTham số được đặt thànhISO.
Đầu ra củaPostgres_verboseKiểu khớp với đầu ra củaPostgreSQLphát hành trước 8.4 khiDatestyletham số được đặt thành khôngISOOUTPUT.
Đầu ra củaISO_8601Phong cách khớp với"Định dạng với người thiết kế "Được mô tả trong Phần 4.4.3.2 của ISO 8601 tiêu chuẩn.
Bảng 8-18. Ví dụ kiểu đầu ra khoảng thời kèo bóng đá c1
Đặc tả kiểu | Khoảng thời kèo bóng đá c1 năm | Khoảng thời gian ban kèo bóng đá c1 | Khoảng thời kèo bóng đá c1 hỗn hợp |
---|---|---|---|
SQL_STANDARD | 1-2 | 3 4:05:06 | -1-2 +3 -4: 05: 06 |
Postgres | 1 năm 2 Mons | 3 kèo bóng đá c1 04:05:06 | -1 năm -2 MONS +3 kèo bóng đá c1 -04: 05: 06 |
Postgres_verbose | @ 1 năm 2 Mons | @ 3 kèo bóng đá c1 4 giờ 5 phút 6 giây | @ 1 năm 2 Mons -3 kèo bóng đá c1 4 giờ 5 phút 6 giây trước kia |
ISO_8601 | P1Y2M | P3DT4H5M6S | P-1Y-2M3DT-4H-5M-6S |
PostgreSQLSử dụng Julian kèo bóng đá c1 cho tất cả các tính toán kèo bóng đá c1/giờ. Điều này có hữu ích thuộc tính của kèo bóng đá c1 tính toán chính xác từ 4713 trước Công nguyên đến xa trong tương lai, sử dụng giả định rằng chiều dài của Năm là 365.2425 kèo bóng đá c1.
Hội nghị kèo bóng đá c1 trước thế kỷ 19 làm cho Đọc thú vị, nhưng không đủ nhất quán để đảm bảo Mã hóa thành một trình xử lý kèo bóng đá c1/thời gian.