По-долу са две функции, които могат да се използват за връщане на деня от дата в Oracle Database.
EXTRACT()
Функция
EXTRACT(datetime)
функцията се използва за извличане на различни части за дата и време от стойност на дата и час. Това включва деня.
Ето един пример:
SELECT EXTRACT(DAY FROM DATE '2037-10-25')
FROM DUAL;
Резултат:
25
Това е DAY
ключова дума, която извлича частта от деня от датата. Можем да получим други части за дата, като я променим на съответната ключова дума. Например YEAR
, MONTH
, HOUR
, MINUTE
и др.
Можем да използваме функцията и с други стойности за дата и час, като TIMESTAMP
и др.
TO_CHAR(datetime)
Функция
Можем също да използваме TO_CHAR(datetime)
функционират като алтернативен метод за получаване на деня от дата.
Тази функция приема стойността за дата и време или интервал като свой първи аргумент и модел на формат като втори аргумент. След това функцията преобразува стойността в тип данни VARCHAR2
в посочения формат.
Форматният модел определя формата, за който да се върне стойността за дата и време/интервал. Форматният модел се състои от един или повече форматни елементи. Това ни позволява внимателно да изработим резултатите, за да отразяват желания от нас формат.
Ако искаме да върнем само деня, можем да използваме един от елементите на формат за извличане на деня.
Ден от месеца
За да получите деня от месеца (между 1-31), използвайте DD
форматен елемент:
SELECT TO_CHAR(DATE '2037-10-03', 'DD')
FROM DUAL;
Резултат:
03
Пълно име
За да получите пълното име на деня, използвайте DAY
:
SELECT TO_CHAR(DATE '2037-10-03', 'DAY')
FROM DUAL;
Резултат:
SATURDAY
Име за кратък ден
За да получите съкратеното име на деня, използвайте DY
:
SELECT TO_CHAR(DATE '2037-10-03', 'DY')
FROM DUAL;
Резултат:
SAT
Ден от годината
За да получите деня от годината (между 1-366), използвайте DDD
форматен елемент:
SELECT TO_CHAR(DATE '2037-10-03', 'DDD')
FROM DUAL;
Резултат:
276
Ден от седмицата
За да получите деня от седмицата (между 1-7), използвайте D
форматен елемент:
SELECT TO_CHAR(DATE '2037-10-03', 'D')
FROM DUAL;
Резултат:
6
Този елемент на формат зависи от територията на NLS на сесията. Стойността на NLS_TERRITORY
на моята система параметърът е AUSTRALIA
, и следователно съботата се счита за шести ден от седмицата.
Ето какво се случва, ако променя стойността на моя NLS_TERRITORY
параметър към AMERICA
и изпълнете отново същата заявка:
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT TO_CHAR(DATE '2037-10-03', 'D')
FROM DUAL;
Резултат:
7
Този път събота се счита за седми ден от седмицата.