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

Khắc phục:“độ chính xác hàng đầu của khoảng thời gian quá nhỏ” trong Cơ sở dữ liệu Oracle

Nếu bạn đang cố gắng sử dụng một ký tự khoảng thời gian trong Oracle, nhưng bạn vẫn nhận được lỗi "độ chính xác hàng đầu của khoảng thời gian quá nhỏ", hy vọng điều này sẽ hữu ích.

Lỗi

Đây là một ví dụ về lỗi:

SELECT INTERVAL '125' YEAR
FROM DUAL;

Kết quả:

ORA-01873: the leading precision of the interval is too small
01873. 00000 -  "the leading precision of the interval is too small"
*Cause:    The leading precision of the interval is too small to store the
           specified interval.
*Action:   Increase the leading precision of the interval or specify an
           interval with a smaller leading precision.
Error at Line: 9 Column: 17

Giải pháp

Dưới đây là cách khắc phục sự cố:

SELECT INTERVAL '125' YEAR(3)
FROM DUAL;

Kết quả:

+125-00

Tất cả những gì tôi đã làm là thêm (3) đến YEAR từ khóa. Điều này chỉ định độ chính xác là 3.

Độ chính xác mặc định là 2 và vì vậy nếu chúng tôi không chỉ định độ chính xác cao hơn, thì lỗi sẽ xảy ra.

Bạn có thể cung cấp độ chính xác lên đến 9.

Ví dụ:

SELECT INTERVAL '123456789' YEAR(9)
FROM DUAL;

Kết quả:

+123456789-00

Và đây là điều sẽ xảy ra nếu chúng tôi giảm độ chính xác trong khi vẫn giữ nguyên con số:

SELECT INTERVAL '123456789' YEAR(5)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT INTERVAL '123456789' YEAR(5)
FROM DUAL
Error at Command Line : 1 Column : 17
Error report -
SQL Error: ORA-01873: the leading precision of the interval is too small
01873. 00000 -  "the leading precision of the interval is too small"
*Cause:    The leading precision of the interval is too small to store the
           specified interval.
*Action:   Increase the leading precision of the interval or specify an
           interval with a smaller leading precision.

Lỗi tương tự như trước đây.

Ngoài ra, bất kỳ điều gì cao hơn 9 đều dẫn đến lỗi:

SELECT INTERVAL '123456789' YEAR(20)
FROM DUAL;

Kết quả:

Error starting at line : 1 in command -
SELECT INTERVAL '123456789' YEAR(20)
FROM DUAL
Error at Command Line : 1 Column : 34
Error report -
SQL Error: ORA-30088: datetime/interval precision is out of range
30088. 00000 -  "datetime/interval precision is out of range"
*Cause:    The specified datetime/interval precision was not between 0 and 9.
*Action:   Use a value between 0 and 9 for datetime/interval precision.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Phương pháp thu thập:Hàm COUNT trong cơ sở dữ liệu Oracle

  2. Xử lý cập nhật đồng thời ở chế độ ngủ đông

  3. Số ngày thứ sáu giữa hai ngày

  4. Mức lương tối đa thứ n trong Oracle

  5. Oracle SID và Tên dịch vụ; những lỗi kết nối