Oracle
 sql >> база данни >  >> RDS >> Oracle

Функция LOCALTIMESTAMP() в Oracle

В Oracle Database, LOCALTIMESTAMP() функцията връща текущата дата и час в часовата зона на сесията в стойност от тип данни TIMESTAMP .

Това е подобно на CURRENT_TIMESTAMP , с изключение на CURRENT_TIMESTAMP връща TIMESTAMP WITH TIME ZONE стойност.

Синтаксис

Синтаксисът е така:

LOCALTIMESTAMP [ (timestamp_precision) ]

Където по избор timestamp_precision Аргументът указва точността на частна секунда на върнатата стойност за време.

При извикване на функцията без аргумент, скобите трябва да бъдат пропуснати.

Пример

Ето пример за извикване на функцията без уточняване на точността:

SELECT LOCALTIMESTAMP
FROM DUAL;

Резултат:

07/AUG/21 08:49:50.026443000 AM

Този пример показва датата във формат, базиран на стойността на NLS_DATE_FORMAT на моята система параметър (който в момента е DD/MON/RR ). Този параметър извлича стойността си от NLS_TERRITORY параметър (от който моят е AUSTRALIA ).

Имаме възможност да променим тези параметри (например вижте Как да промените формата на датата във вашата сесия на Oracle).

Като алтернатива можем да използваме функция като TO_CHAR() за да върнете резултата в различен формат.

Пример:

SELECT TO_CHAR(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

Резултат:

2021-08-07 08:50:20

Прецизност

Ето пример, който определя точността. Това определя точността на частна секунда на върнатата времева стойност.

SELECT LOCALTIMESTAMP(9)
FROM DUAL;

Резултат:

07/AUG/21 08:50:47.203717000 AM

Обърнете внимание, че аргументът за точност трябва да е число между 0 и 9.

Ето какво се случва, когато предадем стойност извън този диапазон:

SELECT LOCALTIMESTAMP(10)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT LOCALTIMESTAMP(10)
FROM DUAL
Error at Command Line : 1 Column : 23
Error report -
SQL Error: ORA-30088: datetime/interval precision is out of range
30088. 00000 -  "datetime/interval precision is out of range"
*Cause:    The specified datetime/interval precision was not between 0 and 9.
*Action:   Use a value between 0 and 9 for datetime/interval precision.

Пропускане на скобите без посочване на точност

Както споменахме, при извикване на LOCALTIMESTAMP без да се предава precision аргумент, трябва да пропуснете скобите.

Ето какво се случва, когато включим скоби, без да посочим точността:

SELECT LOCALTIMESTAMP()
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT LOCALTIMESTAMP()
FROM DUAL
Error at Command Line : 1 Column : 23
Error report -
SQL Error: ORA-30088: datetime/interval precision is out of range
30088. 00000 -  "datetime/interval precision is out of range"
*Cause:    The specified datetime/interval precision was not between 0 and 9.
*Action:   Use a value between 0 and 9 for datetime/interval precision.

Получаваме същата грешка като в предишния пример. Oracle Database търси аргумент за прецизност между 0 и 9, но не предадохме нито един.

Нулев аргумент

Същата грешка възниква при предаване на null :

SELECT LOCALTIMESTAMP(null)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT LOCALTIMESTAMP(null)
FROM DUAL
Error at Command Line : 1 Column : 23
Error report -
SQL Error: ORA-30088: datetime/interval precision is out of range
30088. 00000 -  "datetime/interval precision is out of range"
*Cause:    The specified datetime/interval precision was not between 0 and 9.
*Action:   Use a value between 0 and 9 for datetime/interval precision.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвам съществуващата последователност на Oracle за генериране на идентификатор в хибернация?

  2. Инсталиране на Oracle Instant Client

  3. Как да премахнете нулата, когато цялата част е нула в Oracle

  4. Oracle :изберете максимална стойност от различни колони на същия ред

  5. Функция SQRT() в Oracle