[英]How to fix date format problem in Oracle?
我需要運行這個查詢
SELECT ADD_MONTHS (
TRUNC (TO_DATE (i.list_member, 'dd-mm-yyyy'),'MM'), 1 * LEVEL - 13) month
FROM DUAL
其中i.list_member
是 VARCHAR2,這是選擇的結果,格式類似於 mm-yyyy (09-2019)
當我運行查詢時,我得到
SQL error [1841] [22008]: ORA-01841: the (complete) year must be between -4713 and +9999, and be different from 0
問題是日期格式,有人可以幫忙解決嗎?
i.list_member 是一個 VARCHAR2,它是一個選擇的結果,格式類似於 mm-yyyy (09-2019)
翻譯日期:
select add_months(to_date (i.list_member, 'mm-yyyy'), level - 13) month
from dual -- you should be selecting from a table here
或者,如果您想要翻譯日期的月份數:
select extract(month from add_months(to_date (i.list_member, 'mm-yyyy'), level - 13)) month
from dual
格式掩碼應該匹配數據,即
SQL> alter session set nls_date_format = 'dd.mm.yyyy';
Session altered.
SQL> SELECT ADD_MONTHS (TRUNC (TO_DATE ('09-2019', 'mm-yyyy'), 'MM'),
2 1 * LEVEL - 13)
3 month ^^^^^^
4 FROM DUAL This is i.list_member
5 CONNECT BY LEVEL <= 12
6 /
MONTH
----------
01.09.2018
01.10.2018
01.11.2018
01.12.2018
01.01.2019
01.02.2019
01.03.2019
01.04.2019
01.05.2019
01.06.2019
01.07.2019
01.08.2019
12 rows selected.
SQL>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.