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

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

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

Подобен е на LOCALTIMESTAMP , с изключение на LOCALTIMESTAMP връща TIMESTAMP стойност.

Синтаксис

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

CURRENT_TIMESTAMP [ (precision) ]

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

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

Пример

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

SELECT CURRENT_TIMESTAMP
FROM DUAL;

Резултат:

06/AUG/21 08:32:31.165866000 AM AUSTRALIA/BRISBANE

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

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

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

Пример:

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

Резултат:

2021-08-06 08:44:39

Прецизност

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

SELECT CURRENT_TIMESTAMP(9)
FROM DUAL;

Резултат:

06/AUG/21 09:02:37.868264000 AM AUSTRALIA/BRISBANE

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

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

SELECT CURRENT_TIMESTAMP(10)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT CURRENT_TIMESTAMP(10)
FROM DUAL
Error at Command Line : 1 Column : 26
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.

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

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

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

SELECT CURRENT_TIMESTAMP()
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT CURRENT_TIMESTAMP()
FROM DUAL
Error at Command Line : 1 Column : 26
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 CURRENT_TIMESTAMP(null)
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT CURRENT_TIMESTAMP(null)
FROM DUAL
Error at Command Line : 1 Column : 26
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 Database (издания 12c, 18c и 19c)

  3. Използване на Oracle EXPAND_SQL_TEXT

  4. Поток за влизане в R12.2 и основно отстраняване на неизправности

  5. Как да превърнем 2 заявки с общи колони (A, B) и (A, C) само в една (A, B, C)?