Robię więc pracę domową, w której muszę wyświetlić aktualną datę, a następnie datę za trzy miesiące od teraz, co zrobiłem z tym:
SELECT CURRENT_DATE AS "Today"s Date", LOWER(ADD_MONTHS(CURRENT_DATE, 3)) AS "Today, Three Months Hence" FROM dual;
i znowu z tym:
SELECT CURRENT_DATE AS "Today"s Date", LOWER(CURRENT_DATE + INTERVAL "3" MONTH)AS "Today, Three Months Hence" FROM dual;
wyniki:
Today"s Date
05-FEB-14
Today, Three Months Hence
05-may-14
Zastanawiam się, czy istnieje sposóbwyświetla wyniki przyszłej daty, w której pokazuje tylko miesiąc i nic więcej (tzn. nie ma dnia ani roku). Czy to jest możliwe w Oracle, czy ja po prostu chcę spróbować niemożliwego?
Odpowiedzi:
2 dla odpowiedzi № 1Musisz tylko określić format wyświetlania, który tak naprawdę powinieneś zrobić, zamiast polegać na ustawieniach domyślnych sesji:
SELECT TO_CHAR(CURRENT_DATE, "DD/MM/YYYY") AS "Today"s Date",
TO_CHAR(ADD_MONTHS(CURRENT_DATE, 3), "YYYY-MM-DD")
AS "Today, Three Months Hence",
TO_CHAR(ADD_MONTHS(CURRENT_DATE, 3), "Month") AS "Three Months Hence"
FROM dual;
| TODAY"S DATE | TODAY, THREE MONTHS HENCE | THREE MONTHS HENCE |
|--------------|---------------------------|--------------------|
| 06/02/2014 | 2014-05-06 | May |
Prosty SQL Fiddle.
Wyświetlane są dostępne elementy modelu formatu daty w dokumentacji.
0 dla odpowiedzi nr 2
ZA date
wartość jest faktycznie przechowywana jako liczba w bazie danych, a nie w łańcuch znaków. To, co widzisz w wynikach, to domyślna interpretacja daty sesji.
Aby zmienić sposób wyświetlania pól daty, musisz użyć to_char
funkcjonować.
select to_char(sysdate, "MM") from dual;
"MM"
parametr tutaj oznacza miesiąc, czyli cozapytałeś. Jest to ciąg formatujący do konwertowania daty na ciąg znaków. Aby uzyskać listę opcji z ciągiem formatu, proste wyszukiwanie google pomoże.
0 dla odpowiedzi № 3
OK, patrzyłem na przykład na to_char i ostatecznie go posortowałem:
SELECT CURRENT_DATE AS "Today"s Date", TO_CHAR(ADD_MONTHS(CURRENT_DATE, 3), "month") AS "Today, Three Months Hence" FROM dual;
Jest to podobne do odpowiedzi udzielonej przez Alexa. Zauważyłem, że gdy piszę miesiąc małymi literami, wynik jest również pisany małymi literami, a gdy jest wpisywany jako MIESIĄC, pisany dużymi literami, wynik jest pisany wielkimi literami, co warto wiedzieć. To nie było konieczne, ale byłem ciekawy.