Sql 在Oracle数据库中,TO_CHAR(Date)给出结果“00-000-00”
我有一个日期列,我需要将其转换为字符。但这样做会检索“00-000-00”,即使实际数据具有日期值。另外,当我再次将其转换为日期时,它会给出第二天的值 例如:Sql 在Oracle数据库中,TO_CHAR(Date)给出结果“00-000-00”,sql,oracle,date,Sql,Oracle,Date,我有一个日期列,我需要将其转换为字符。但这样做会检索“00-000-00”,即使实际数据具有日期值。另外,当我再次将其转换为日期时,它会给出第二天的值 例如: Value: 25-MAR-17 (Date Datatype) TO_CHAR(Value, 'DD-MON-YY'): '00-000-00' TO_DATE(Value, 'DD-MON-YY'): '26-MAR-17' 并不是所有的价值观都是如此,只有最近的价值观才是如此 以下是该日期列中的转储值: select OrderN
Value: 25-MAR-17 (Date Datatype)
TO_CHAR(Value, 'DD-MON-YY'): '00-000-00'
TO_DATE(Value, 'DD-MON-YY'): '26-MAR-17'
并不是所有的价值观都是如此,只有最近的价值观才是如此
以下是该日期列中的转储值:
select OrderNumber, LoanDate, Dump(LoanDate) from OrderDetail
where OrderNumber=283402
订单号| LoanDate | DumpLoanDate
283402 | 2017年3月26日|典型值=12 Len=7:120117,3,27,0,15,40
你能给我解释一下为什么会发生这些奇怪的事情以及如何处理吗 作为答案而不是评论,因为它太大了,无法评论
您所说的0是不可能的。如果将NLS_DATE_格式设置为仅显示时间,则可能会得到零。此外,由于时区转换,您可能会得到下一个日期
要进行故障排除,请按照以下步骤编辑问题,并在问题中给出输出
从nls_会话_参数中选择*
运行select sysdate(选择系统日期);并显示输出
运行此alter会话集nls_date_format='DD-MON-YYYY HH24:MI:SS';
运行select sysdate from dual并显示输出。
现在再次选择您的日期,从rownumIt的位置选择我们很难理解您的问题,因为您提供的数据不可能出现这种情况。请提供一个可复制的测试用例。也就是说,一个包含示例数据和正在运行的查询的虚拟表显示了这种行为。把细节减少到要点。您可能会发现,此练习为您提供了洞察力,并允许您在无需我们帮助的情况下解决问题。日期到日期转换只是为了检查其行为。请提供一个示例,其中包含复制问题所需的DDL和DML语句。还请尝试从您的\u表中选择转储您的\u date\u列,并公布其值。您已编辑了问题,但未添加任何新的实质性信息。如果你想要一个正确的答案,你必须发布一些数据,让我们能够重现和调查你的问题。你从DUMPvalue中得到了什么?nls\u date\u格式在调用\u char时不相关