Próbuję zidentyfikować problem w colum daty w moim stole. Baza danych to Oracle 11g.
Sytuacja wygląda następująco: Po uruchomieniu następującego zapytania:
select to_char(data_val, "DD/MM/YYYY"), a.data_val from material a order by a.data_val asc;
pięć pierwszych linii wyniku to:
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
pytanie brzmi:
Dlaczego funkcja to_char pierwszych trzech wierszy zwraca inną wartość daty (00/00/0000)?
A dlaczego data 29/06/5585 jest pierwszym wynikiem zamówienia daty ASC? To będzie słuszne, używając: zamów przez data_val DESC, prawda?
Odpowiedzi:
0 dla odpowiedzi № 1Napotkaliśmy ten sam problem. Mogę potwierdzić, że kolumna „data” jest rzeczywiście typem DATE. Data, o której mowa, to 01 maja 2014 r., Więc najprawdopodobniej nie jest związana z dużą liczbą w oryginalnym poście. A gdy wykonasz jakieś obliczenia z datą, problem jest rozwiązany, tj. wszystkie zera, TO_CHAR (punkt odniesienia + 1) byłyby zgodne z oczekiwaniami, a nawet TO_CHAR (punkt odniesienia +1 -1) byłyby poprawne.
Na podstawie wartości DUMP wydaje się, że problemjest to, że udało nam się jakoś przechowywać 31 kwietnia 2014 r., a nie 01 maja 2014 r. (teraz sprawdzam, jak to było możliwe).