/ / W jaki sposób można obciąć lub ograniczyć wyniki wyniku daty, do którego dodajesz czas? (Oracle SQL) - sql, oracle, date

W jaki sposób możesz obciąć lub ograniczyć wyniki wyniku daty, do którego dodajesz czas? (Oracle SQL) - sql, oracle, date

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 № 1

Musisz 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. Tabela wyników