我在一个文件中传递"19851003“作为出生日期,但在日志文件中得到以下错误。
ORA-01841: (full) year must be between -4713 and +9999, and not be 0
我只是把它作为字符串传递,你知道为什么会出现这个错误吗?
日志文件中的错误:
error processing column DATE_OF_BIRTH in row 2 for datafile /xfer/x/directory/filename.csv
ORA-01841: (full) year must be between -4713 and +9999,
在处理大型表(2b+行)概念的分区证明时,我们发现了select语句的一些奇怪行为:
create table date_test (
JOURNAL_ID VARCHAR2(10 BYTE) NOT NULL ENABLE,
JOURNAL_DATE DATE NOT NULL ENABLE
)
PARTITION BY RANGE (JOURNAL_DATE) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
(
PARTITION P_20010101 VALUES LESS THAN (TO_DATE('20010101'
SQL> select to_date(' ','YYYYMMDD') from dual;
ERROR at line 1:
ORA-01841: (full) year must be between -4713 and +9999, not be 0
SQL> select * from dual where to_date(' ','YYYYMMDD') = '19960512' or 1 = 2;
ERROR at line 1:
ORA-01841: (full) year m
我对甲骨文有点厌烦。
我下面的SQL
select * from orders where
trunc(ordered_date)
between
to_date('01-JAN-12')
and
to_date('07-JAN-12')
Ordered_date是日期数据类型
是否给出了下面的错误。
Error starting at line 1 in command:
select * from orders
where
trunc(ordered_date)
between
to_date('01-JAN-12')
and
我尝试了各种修改以获得正确的查询日期格式。下面是其中之一。下面的日期实际上是由java程序中的字符串替换来填写的。我需要能够解释它并运行查询。当前,查询失败,出现以下错误:
[Error] Execution (48: 18): ORA-01841: (full) year must be between -4713 and +9999, and not be 0
SELECT
to_date('Mon Jan 01 12:00:00 EST 1990', 'yyyy/mm/dd HH:MI:SS')
FROM
duAL
我有一个plsql块,并且我得到了"ORA-01841:(完整)年份必须介于-4713和+9999之间,而不是0“的错误。我的where子句是; WHERE TO_DATE(MK.CREATE_DATE||'-01','YYYY-MM-DD') BETWEEN trunc(add_months(trunc(sysdate),-1),'MM') and trunc(sysdate,'MM')-1 mk.create_date format是'2020-01','2020-02‘exc. 我的观点是
我需要运行这个查询
SELECT ADD_MONTHS (
TRUNC (TO_DATE (i.list_member, 'dd-mm-yyyy'),'MM'), 1 * LEVEL - 13) month
FROM DUAL
其中i.list_member是一个VARCHAR2,它是select的结果,格式类似于mm-yyyy (09-2019)
当我运行查询时,我得到
SQL error [1841] [22008]: ORA-01841: the (complete) year must be between -4713 and +99
我有以下错误,ORA-01841 (full) year must be between -4713 and +9999 and not be 0
错误来自下面的case语句。
对发生了什么以及如何解决有帮助吗?
SQL
SELECT
CASE
WHEN NVL(uap.us_pend_dt, act_d_dt) >= TO_CHAR(TO_DATE('".PENDING_DATE_CUTOFF."','YYYY-MM-DD'),'mm/dd/yyyy')
THEN NVL(uap.us_pend_dt, act_d_dt
我有一个在PL/SQL中非常有效的查询,在这个查询中,我要求用户输入一个日期,其中说:
select * from X (X is a table in a database called DATABASE which I am connected to)
where date_=TO_DATE('&Enter_Date','YYYY-MM-DD')
我尝试使用以下方法在Python和cx_Oracle中复制它:
import cx_Oracle
db2 = cx_Oracle.connect('/@DATABASE')
positio
我想在一个查询中这样做,在这个查询中,我检查我的创建日期是否比另一个更大,但是表列是按年、月和日划分的,有时在一年中有一个非法值。
Select count{*) from coverage cv
WHERE EXIST (Select * from addressTable ad
and cv.date > to_date(ad.year||ad.month||ad.day, 'YYYYMMDD')
当我运行这个程序时,我会得到错误ORA-01841:整年必须在-4713到+9999之间,而不是0。
我可以在查询中写一些东西来忽略非法的值,只计算合法的值吗?
下面是我使用的查询
select * from (
select table_name, to_number(to_char(trunc(to_date(substr(table_name,instr(table_name,'_',-1,2)+1,8),'yyyymmdd')),'J')) as t_date, to_number(to_char(trunc(sysdate),'J')) as s_date
from user_tables
where table_name like 'WORLD_RI%'
我试图在Server上的openquery中动态传递日期函数。我的Server连接到和OleDB Oracle数据库。
当我使用基于Oracle的日期函数运行查询时,我的查询将运行,但不返回数据:
SELECT *
FROM OPENQUERY( [SMA], 'SELECT B.SQL_DATE
FROM DIM_DATE B
WHERE B.SQL_DATE = current_DATE');
当我使用基于Server的日期函数运行该查询时,会收到以下错误消息:
SELECT
很抱歉问了一个问题,它有很多关于堆栈溢出的答案,请允许我在我的上下文中提出这个问题,这可能与前面的问题不同。
我在一个生产数据库中,在那里我不能更改数据。进入这个数据库的数据是高度动态的,它一直在变化,因此很难重现该错误。我正在通过JDBC (Java)访问Oracle11g。
好吧,为了删除我会收到
ORA-01841: (full) year must be between -4713 and +9999, and not be 0.
这是我的桌子(简化):
MY_TABLE
Name Null? Type
我正在尝试将一个值转换为正常的日期格式。但我收到错误ORA-01841:(完整)年份必须介于-4713和+9999之间,而不是0。我在这个网站上研究了一个类似问题的答案,但这并没有解决我的问题。
-- How the data looks like
select REPLACE(REGEXP_SUBSTR(data_detail, '([^|]*)([$|]|$)', 1, 5), '|', '') from land.LAND_DATA;
输出
2017-11-16T04:45:05.000Z
2017-11-16T04:46:04.000Z
我一直在努力理解为什么这个查询不能工作。此所有者的所有分区名称都具有格式为'R_DATE_20170831‘的值。但下面的查询始终返回错误ORA-01841 (完整)年份必须介于-4713和+9999之间,而不是0。当我单独显示每个日期部分时,它们都在该范围内。我的NLS_DATE_FORMAT显示了一个值'DD-MON-RR‘。
SELECT COUNT(*)
FROM dba_tab_partitions
WHERE table_owner = 'myId' AND
TO_DATE(SUBSTR(partition_name,INSTR(part
让我忙着调查Oracle的转换,我发现了Oracle11.1中的一个bug。测试用例是:
案例1。
SELECT TO_CHAR(TO_TIMESTAMP('0', 'J'), 'DD MON SYYYY') FROM DUAL
这将返回定义为的"01 JAN -4713“,但会引发错误。
ORA-01854: julian date must be between 1 and 5373484
案例2。
SELECT TO_CHAR(TO_TIMESTAMP('1', 'J'), 'DD MON S
我有一个函数,它取月份的最后一天,当日期不一致时:
create or replace function updateDate(p_date varchar2) return date as
l_date date;
e_bad_day exception;
pragma exception_init (e_bad_day, -1847);
begin
begin
-- try to convert
l_date := to_date(p_date ,'yyyymmdd') ;
exception
when e_bad_day t
你好,我刚开始使用sqlldr。我正在尝试将数据从csv文件发送到DB。
csv文件类似于以下employee.dat:
id,code,dNum,name,last,StartDate,EndDate
MA2001,gg,0011,John,Smith,20020127,20020127
我有一个要传递给sqlldr的控制文件,如下所示:
OPTIONS(skip=1,bindsize=20000000,readsize=20000000,rows=1024)
LOAD DATA
APPEND
INTO TABLE SOMETHING_ADMIN.EMPLOYEE
FIELDS TERMIN
我有一个EF查询,其中我需要在DateTime的实体集合中获取每月的第一天。这是使用Linq to Entities (如果是Linq to Objects,我只需要实例化一个新的DateTime)。这基本上是我使用的代码:
dbContext.Calendar
.Select(date => DbFunctions.CreateDateTime(date.Year, date.Month, 1, 0, 0, 0))
.ToList();
这将导致以下错误:ORA-01841: (full) year must be between -4713 and +9999, an
我目前从我的查询中得到了一个ORA-01841,我认为这可能是由于查询中的以下逻辑(一些我没有实现的东西)。下面的逻辑试图做什么?
AND (EVENT_DAY_LOCAL BETWEEN ADD_MONTHS(TRUNC(TO_DATE('{2015/11/14}','YYYY/MM/DD'),'D'),-2)
AND TO_DATE('{2015/11/15}','YYYY/MM/DD')
OR EVENT_DAY_LOCAL BETWEEN ADD_MO
转换时出错 select to_date('Sep 26 00:15:00','DD/MM/YYYY HH24:MI:SS') from dual ;
ORA-01841: (full) year must be between -4713 and +9999, and not be 0 . 寻找解决方案
如何编写查询来查找以下数据差距。
--Scenario1 -- Query1 --查找同一表格中的间隙(例如tableb )
ID EFF_DT TERM_DT
800 6/15/2012 12:00:00.000 AM 10/14/2012 12:00:00.000 AM -- GAP
800 10/16/2012 12:00:00.000 AM 11/14/2012 12:00:00.000 AM
800 11/15/2012 12:00:00.000 AM 12/