FM
loại bỏ các số 0 ở đầu và các khoảng trống ở cuối mà nếu không sẽ được thêm vào để làm cho đầu ra của một mẫu có chiều rộng cố định. Trong PostgreSQL, FM
chỉ sửa đổi thông số kỹ thuật tiếp theo, trong khi ở Oracle, FM
ảnh hưởng đến tất cả các thông số kỹ thuật tiếp theo và các công cụ sửa đổi FM
lặp đi lặp lại bật và tắt chế độ điền
TM
loại bỏ các khoảng trống ở cuối cho dù có chỉ định FM
hay không
to_timestamp
và to_date
bỏ qua trường hợp chữ cái trong đầu vào; . Khi sử dụng công cụ sửa đổi TM
, việc sắp xếp trường hợp được thực hiện theo quy tắc đối chiếu đầu vào của hàm [xem Phần 24. 2]
to_timestamp
và to_date
bỏ qua nhiều khoảng trống ở đầu chuỗi nhập và xung quanh các giá trị ngày và giờ trừ khi sử dụng tùy chọn FM
4. Ví dụ: FM
5 và FM
6 hoạt động, nhưng FM
7 trả về lỗi vì to_timestamp
chỉ mong đợi một khoảng trắng. FM
4 phải được chỉ định là mục đầu tiên trong mẫu
Dấu phân cách [dấu cách hoặc ký tự không phải chữ cái/không phải chữ số] trong chuỗi mẫu của to_timestamp
và to_date
khớp với bất kỳ dấu phân cách đơn lẻ nào trong chuỗi đầu vào hoặc bị bỏ qua, trừ khi tùy chọn FM
4 được sử dụng. Ví dụ: FM
3 và FM
4 hoạt động, nhưng FM
5 trả về lỗi vì số lượng dấu phân cách trong chuỗi đầu vào vượt quá số lượng dấu phân cách trong mẫu
Nếu FM
4 được chỉ định, dấu tách trong chuỗi mẫu khớp chính xác với một ký tự trong chuỗi đầu vào. Nhưng lưu ý rằng ký tự chuỗi đầu vào không bắt buộc phải giống với dấu phân cách từ chuỗi mẫu. Ví dụ: FM
7 hoạt động, nhưng FM
8 trả về lỗi vì khoảng trắng thứ hai trong chuỗi mẫu tiêu thụ chữ cái FM
9 từ chuỗi đầu vào
Mẫu mẫu FM
0 có thể khớp với số đã ký. Nếu không có tùy chọn FM
4, dấu trừ có thể không rõ ràng và có thể được hiểu là dấu phân cách. Sự mơ hồ này được giải quyết như sau. Nếu số lượng dấu phân cách trước FM
0 trong chuỗi mẫu ít hơn số lượng dấu phân cách trước dấu trừ trong chuỗi đầu vào, thì dấu trừ được hiểu là một phần của FM
0. Mặt khác, dấu trừ được coi là dấu phân cách giữa các giá trị. Ví dụ: FM
4 khớp với FM
5 đến FM
0, nhưng FM
7 khớp với FM
8 đến FM
0
Văn bản thông thường được cho phép trong các mẫu TM
0 và sẽ được xuất ra theo nghĩa đen. Bạn có thể đặt một chuỗi con trong dấu ngoặc kép để buộc nó được hiểu là văn bản chữ ngay cả khi nó chứa các mẫu mẫu. Ví dụ: trong TM
1, TM
2 sẽ được thay thế bằng dữ liệu năm, nhưng một TM
3 trong TM
4 sẽ không được. Trong to_date
, TM
6 và to_timestamp
, văn bản bằng chữ và chuỗi trích dẫn kép dẫn đến việc bỏ qua số lượng ký tự có trong chuỗi;
Mẹo
Trước PostgreSQL 12, có thể bỏ qua văn bản tùy ý trong chuỗi đầu vào bằng các ký tự không phải chữ cái hoặc không phải chữ số. Ví dụ, FM
0 được sử dụng để làm việc. Bây giờ bạn chỉ có thể sử dụng các ký tự chữ cái cho mục đích này. Ví dụ: FM
1 và FM
2 bỏ qua FM
3, FM
4 và FM
5
Nếu bạn muốn có một trích dẫn kép trong đầu ra, bạn phải đặt trước nó một dấu gạch chéo ngược, ví dụ: FM
6. Dấu gạch chéo ngược không có gì đặc biệt ngoài chuỗi trích dẫn kép. Trong một chuỗi có dấu ngoặc kép, dấu gạch chéo ngược làm cho ký tự tiếp theo được hiểu theo nghĩa đen, bất kể đó là gì [nhưng điều này không có tác dụng đặc biệt trừ khi ký tự tiếp theo là dấu ngoặc kép hoặc dấu gạch chéo ngược khác]
Trong ________ và ________ 7, đặc tả định dạng của năm ít hơn bốn chữ số, e. g. , FM
9 và năm được cung cấp nhỏ hơn bốn chữ số, năm sẽ được điều chỉnh gần nhất với năm 2020, e. g. , to_timestamp
0 trở thành 1995
Trong to_timestamp
và to_date
, năm âm được coi là biểu thị trước Công nguyên. Nếu bạn viết cả năm âm và trường to_timestamp
3 rõ ràng, bạn lại nhận được AD. Đầu vào của năm 0 được coi là 1 TCN
Trong to_timestamp
và to_date
, chuyển đổi TM
2 có hạn chế khi xử lý năm có nhiều hơn 4 chữ số. Bạn phải sử dụng một số ký tự hoặc mẫu không phải chữ số sau TM
2, nếu không thì năm luôn được hiểu là 4 chữ số. Ví dụ [với năm 20000]. to_timestamp
8 sẽ được hiểu là năm có 4 chữ số;
Trong to_timestamp
và to_date
, trường to_date
3 [thế kỷ] được chấp nhận nhưng bị bỏ qua nếu có trường FM
9, TM
2 hoặc to_date
6. Nếu to_date
3 được sử dụng với to_date
8 hoặc TM
3 thì kết quả được tính là năm đó trong thế kỷ đã chỉ định. Nếu thế kỷ được chỉ định nhưng năm không được chỉ định, năm đầu tiên của thế kỷ được giả định
Trong to_timestamp
và to_date
, tên hoặc số ngày trong tuần [MON
2, MON
3 và các loại trường liên quan] được chấp nhận nhưng bị bỏ qua vì mục đích tính toán kết quả. Điều này cũng đúng với các trường phần tư [______84]
Trong to_timestamp
và to_date
, ngày đánh số tuần theo tiêu chuẩn ISO 8601 [khác với ngày Gregorian] có thể được chỉ định theo một trong hai cách
Năm, số tuần và ngày trong tuần. ví dụ
MON
7 trả về ngàyMON
8. Nếu bạn bỏ qua ngày trong tuần, nó được coi là 1 [Thứ Hai]Năm và ngày trong năm. ví dụ
MON
9 cũng trả vềMON
8
Cố gắng nhập một ngày bằng cách sử dụng kết hợp các trường đánh số tuần theo tiêu chuẩn ISO 8601 và các trường ngày Gregorian là vô nghĩa và sẽ gây ra lỗi. Trong ngữ cảnh của năm đánh số theo tuần theo tiêu chuẩn ISO 8601, khái niệm “tháng” hoặc “ngày trong tháng” không có ý nghĩa gì. Trong bối cảnh của một năm Gregorian, tuần ISO không có ý nghĩa
thận trọng
Mặc dù to_date
sẽ từ chối hỗn hợp các trường ngày đánh số theo tuần của Gregorian và ISO, nhưng TM
0 sẽ không, vì các thông số định dạng đầu ra như Mon
3 có thể hữu ích. Nhưng tránh viết những thứ như Mon
4; . [Xem Phần 9. 9. 1 để biết thêm thông tin. ]
Trong trường to_timestamp
, mili giây [Mon
6] hoặc micro giây [Mon
7] được sử dụng làm chữ số giây sau dấu thập phân. Ví dụ: Mon
8 không phải là 3 mili giây mà là 300, vì chuyển đổi coi nó là 12 + 0. 3 giây. Vì vậy, đối với định dạng Mon
9, các giá trị đầu vào FM
00, FM
01 và FM
02 chỉ định cùng một số mili giây. Để có ba phần nghìn giây, người ta phải viết FM
03, chuyển đổi coi là 12 + 0. 003 = 12. 003 giây
Đây là một ví dụ phức tạp hơn. FM
04 là 15 giờ, 12 phút và 2 giây + 20 mili giây + 1230 micro giây = 2. 021230 giây
Đánh số ngày trong tuần của FM
05 khớp với hàm FM
06, nhưng của FM
07 không khớp với đánh số ngày của FM
08
Định dạng FM
09 FM
10 và FM
11 như được hiển thị trên đồng hồ 12 giờ, ví dụ: 0 giờ và 36 giờ đều xuất ra dưới dạng FM
12, trong khi FM
13 xuất ra giá trị giờ đầy đủ, có thể vượt quá 23 trong giá trị FM
14