我有一个日期列,我需要转换为字符。但这样做它会检索' 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 OrderNumber, LoanDate, Dump(LoanDate) from OrderDetail
where OrderNumber=283402
OrderNumber| LoanDate | Dump(LoanDate)
283402 | 26-MAR-17 | Typ=12 Len=7: 120,117,3,27,0,15,40
你能解释一下为什么这些奇怪的事情发生了以及如何处理这个问题?
答案 0 :(得分:0)
作为答案而非评论,因为它太大而无法发表评论
您所说的0
是不可能的。如果您已将NLS_DATE_FORMAT设置为仅显示时间,则可能会获得零。此外,由于timezone
转化,您可能会获得下一个日期。
要对其进行问题排查,请按照以下步骤操作,编辑问题,并在问题中输出结果。
SELECT * FROM nls_session_parameters;
运行select sysdate from dual;
并显示输出。
alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
select sysdate from dual
并显示输出。 select <date column> from <your table> where rownum<2;
select to_char(date_column,'DD-MON-YYYY') from your_table where row_num<2;