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

Как работи SYSDATE() в MariaDB

В MariaDB, SYSDATE() е вградена функция за дата и час, която връща текущата дата и час.

Връща времето, през което функцията е била изпълнена (което може да е различно от времето, в което е изпълнена инструкцията).

Връщаната стойност се връща в 'YYYY-MM-DD HH:MM:SS' или YYYYMMDDHHMMSS.uuuuuu формат, в зависимост от това дали функцията се използва в низов или числов контекст.

Връщаната стойност се изразява в текущата часова зона.

Освен това имате възможност да посочите микросекундната точност.

Синтаксис

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

SYSDATE([precision])

Където precision е незадължителен аргумент, който определя микросекундната точност.

Пример

Ето един пример:

SELECT SYSDATE();

Резултат:

+---------------------+
| SYSDATE()           |
+---------------------+
| 2021-05-27 08:40:41 |
+---------------------+

Числов контекст

Когато SYSDATE() се използва в числов контекст, резултатът е в YYYYMMDDHHMMSS.uuuuuu формат.

Пример:

SELECT
    SYSDATE(),
    SYSDATE() + 0;

Резултат:

+---------------------+----------------+
| SYSDATE()           | SYSDATE() + 0  |
+---------------------+----------------+
| 2021-05-27 08:41:19 | 20210527084119 |
+---------------------+----------------+

Прецизност

Ето пример за определяне на микросекундна точност:

SELECT
    SYSDATE(6),
    SYSDATE(6) + 0;

Резултат:

+----------------------------+-----------------------+
| SYSDATE(6)                 | SYSDATE(6) + 0        |
+----------------------------+-----------------------+
| 2021-05-27 08:41:44.561665 | 20210527084144.562263 |
+----------------------------+-----------------------+

Максималната стойност за микросекундната точност е 6. Ето какво се случва, когато се предаде по-голямо число за точността:

SELECT SYSDATE(12);

Резултат:

ERROR 1426 (42000): Too big precision 12 specified for 'sysdate'. Maximum is 6

SYSDATE() срещу NOW()

Въпреки че SYSDATE() е подобен на NOW() функция, има разлики.

Една от основните разлики е, че SYSDATE() връща времето, през което се изпълнява, докато NOW() връща времето, през което операторът е започнал да се изпълнява. Когато се изпълнява в рамките на съхранена процедура или тригер, NOW() ще върне времето, през което съхранената процедура или тригерът е започнал да се изпълнява.

Ето пример, който демонстрира тази разлика:

SELECT 
    NOW(),
    SYSDATE(),
    SLEEP(5),
    NOW(),
    SYSDATE();

Резултат (с помощта на вертикален изход):

    NOW(): 2021-05-27 08:47:06
SYSDATE(): 2021-05-27 08:47:06
 SLEEP(5): 0
    NOW(): 2021-05-27 08:47:06
SYSDATE(): 2021-05-27 08:47:11

В този случай използвахме SLEEP() функция за пауза на обработката за пет секунди преди втората партида функции.

Можем да видим, че вторият път SYSDATE() е извикана, връщаната му стойност е различна от първия път. NOW() от друга страна, върна една и съща стойност и двата пъти.

Има няколко други неща, които трябва да имате предвид, когато използвате SYSDATE() . Например, SET TIMESTAMP не го засяга (докато прави засяга NOW() функция). Също така, SYSDATE() не е безопасно за репликация, ако се използва базирано на изрази двоично регистриране. Въпреки това, има начини да се справите с това, ако е необходимо. Вижте документацията на MariaDB за повече информация.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Оперативни отчети за MySQL, MariaDB, PostgreSQL и MongoDB

  2. Планиране за аварийно възстановяване за MySQL и MariaDB

  3. Напишете оптимизации за Qualcomm Centriq 2400 в MariaDB 10.3.5 Release Candidate

  4. Как CHR() работи в MariaDB

  5. Използване на MySQL Galera Cluster Replication за създаване на гео-разпределен клъстер:Част втора