По-долу са две функции, които могат да се използват за връщане на секундната част от стойност за дата и час в Oracle Database.
EXTRACT()
Функция
EXTRACT(datetime)
функцията се използва за извличане на различни части за дата и час от стойност на дата и час. Това включва частта от секундите.
Ето един пример:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2035-01-01 10:15:37')
FROM DUAL;
Резултат:
37
Това е SECOND
ключова дума, която извлича частта от секундите от стойността за дата и час. Това ще включва всички частични секунди:
SELECT
EXTRACT(
SECOND FROM TIMESTAMP '2035-01-01 10:15:37.123456789'
)
FROM DUAL;
Резултат:
37.123456789
Можем да получим други части за дата, като я променим на съответната ключова дума. Например YEAR
, MONTH
, HOUR
, MINUTE
и др.
Можем да използваме функцията и с други стойности за дата и час, като DATE
.
TO_CHAR(datetime)
Функция
Можем също да използваме TO_CHAR(datetime)
функционира като алтернативен метод за получаване на компонента секунди от стойност за дата и час.
Тази функция приема стойността за дата и време или интервал като свой първи аргумент и модел на формат като втори аргумент. След това функцията преобразува стойността в тип данни VARCHAR2
в посочения формат.
Форматният модел определя формата, за който да се върне стойността за дата и време/интервал. Форматният модел се състои от един или повече елементи на формат. Това ни позволява внимателно да изработим резултатите, за да отразяват желания от нас формат.
Ако искаме да върнем само секундите, можем да използваме един от елементите на формат, които връщат този компонент.
Има няколко различни елемента на формат, които можем да използваме, когато връщаме компонента секунди от стойност за дата и час.
Най-очевидният е SS
форматен елемент:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SS')
FROM DUAL;
Резултат:
37
Както виждаме, SS
Елементът format връща само секундната част, но не и частта от секундите.
Дробни секунди
Ако искаме да включим дробните секунди, можем да използваме FF
форматен елемент. Можем също да използваме X
за да посочите основния символ (символът, използван за разделяне на цялата част от дробната част):
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;
Резултат:
37.123456789
Възможно е също да се ограничи прецизността чрез добавяне на число към FF
част:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF5')
FROM DUAL;
Резултат:
37.12345
Числото може да бъде 1
до 9
.
Въпреки че бихте могли изрично да предоставите свой собствен основен знак – например точка (.
) ), X
Елементът format може да бъде полезен за пренасяне на различни езици/територии.
Когато стартирах горните примери, моят NLS_TERRITORY
параметърът е зададен на AUSTRALIA
, което доведе до символа за основа, който е точка.
Ето какво се случва, когато променя моята NLS_TERRITORY
параметър към GERMANY
:
ALTER SESSION SET NLS_TERRITORY = 'GERMANY';
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;
Резултат:
37,123456789
Сега символът за основа е запетая.
Секунди след полунощ
Можем да използваме SSSSS
за да върнете секундите след полунощ:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 00:01:05', 'SSSSS')
FROM DUAL;
Резултат:
00065