2013-03-30 16 views
7

Czy jest jakiś sposób, aby pozbyć się pory dnia podczas korzystania z current_date lub sysdate. Próbuję tylko zapisać datę sklepu jako YYYY-MM-DD, ale current_date daje mi YYYY-MM-DD HH:MM:SS:MSOracle current_date lub sysdate bez godzin, minut, sekund

Porównując daty, porównuje tylko datę, a nie czas, który byłby równie dobry. Każda pomoc byłaby niesamowita, dziękuję.

+1

Powiązane: http://stackoverflow.com/q/7604167/1065197 –

+0

Format czasu "HH: MM: SS: MS" jest nieprawidłowy. 'MM' oznacza numeryczny miesiąc (" MS "również nie jest rozpoznawane). Powinien to być 'HH: MI: SS'. Jeśli potrzebujesz milisekund, musisz użyć typu danych "TIMESTAMP", ponieważ Oracle przechowuje tylko ułamki do sekundy w polu typu "DATA". – Lion

+1

W Oracle typ danych DATE zawiera pola ROK, MIESIĄC, DZIEŃ, GODZINY, MINUTY i SEKUNDY. W Oracle nie ma typu danych do przechowywania TYLKO pól ROK, MIESIĄC i DZIEŃ. –

Odpowiedz

19

Może powinieneś spróbować

trunc(sysdate) 

funkcję.

+0

Przechowuje czas jako 00:00:00, ale nadal działa. Dzięki. – roverred

+0

Tak, pozostaje typem daty, ale bez dokładnego czasu. – rusty

1

Rusty odpowiedział na część pytania dotyczącego usuwania czasu. Część poświęcona uwzględnieniu czasu porównywania dat jest często wykonywana w ten sposób.

where YourDateField >= StartDate 
and YourDateField < TheDayAfterEndDate 

Jeśli chcesz wyszukiwać pod określoną datą, StartDate i EndDate będą takie same.

+0

Naprawdę lubię 'StartDate <= YourDateField i YourDateField

Powiązane problemy