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.