我试图在表格中的日期列中识别问题。 该数据库是Oracle 11g。
情况是: 当我运行以下查询时:
select to_char(data_val, 'DD/MM/YYYY'), a.data_val from material a order by a.data_val asc;
结果的第五行是:
00/00/0000 | 29/06/5585 00:00:00 00/00/0000 | 29/06/5585 00:00:00 00/00/0000 | 29/06/5585 00:00:00 11/11/1111 | 11/11/1111 00:00:00 01/01/1500 | 01/01/1500 00:00:00
问题是:
为什么前三行的to_char函数返回不同的日期值(00/00/0000)?
为什么日期29/06/5585是ASC日期订单的第一个结果?它是正确的使用:按data_val DESC排序,不会吗?
答案 0 :(得分:0)
我们遇到了同样的问题。我可以确认" date"列确实是DATE类型。 有问题的日期是2014年5月1日,所以它很可能与原帖中的大年号无关。当你用日期执行一些计算时,问题是固定的,即TO_CHAR(数据)将全部为零,TO_CHAR(数据+ 1)将如预期的那样,甚至TO_CHAR(数据+1 -1)也是正确的。 (TO_CHAR(原点+ 0)没有帮助:))
基于DUMP值,似乎问题是我们已经设法存储了2014年4月31日而不是2014年5月1日(现在调查这是如何可能的; Informatica + Oracle 11.2,I相信)。