MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak SYSDATE() działa w MariaDB

W MariaDB, SYSDATE() to wbudowana funkcja daty i czasu, która zwraca bieżącą datę i godzinę.

Zwraca czas wykonania funkcji (który może być inny niż czas wykonania instrukcji).

Zwracana wartość jest zwracana w formacie 'YYYY-MM-DD HH:MM:SS' lub YYYYMMDDHHMMSS.uuuuuu format, w zależności od tego, czy funkcja jest używana w kontekście łańcuchowym czy liczbowym.

Zwracana wartość jest wyrażona w bieżącej strefie czasowej.

Masz również możliwość określenia precyzji w mikrosekundach.

Składnia

Składnia wygląda tak:

SYSDATE([precision])

Gdzie precision jest opcjonalnym argumentem, który określa precyzję w mikrosekundach.

Przykład

Oto przykład:

SELECT SYSDATE();

Wynik:

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

Kontekst numeryczny

Kiedy SYSDATE() jest używany w kontekście numerycznym, wynik jest następujący:YYYYMMDDHHMMSS.uuuuuu format.

Przykład:

SELECT
    SYSDATE(),
    SYSDATE() + 0;

Wynik:

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

Precyzja

Oto przykład określania dokładności w mikrosekundach:

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

Wynik:

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

Maksymalna wartość precyzji w mikrosekundach wynosi 6. Oto, co się dzieje, gdy dla precyzji zostanie przekazana wyższa liczba:

SELECT SYSDATE(12);

Wynik:

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

SYSDATE() vs NOW()

Chociaż SYSDATE() jest podobny do NOW() funkcja, istnieją różnice.

Jedną z głównych różnic jest to, że SYSDATE() zwraca czas wykonania, podczas gdy NOW() zwraca czas rozpoczęcia wykonywania instrukcji. Po uruchomieniu w ramach procedury składowanej lub wyzwalacza NOW() zwróci czas rozpoczęcia wykonywania procedury składowanej lub wyzwalacza.

Oto przykład, który pokazuje tę różnicę:

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

Wynik (przy użyciu wyjścia pionowego):

    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

W tym przypadku użyliśmy funkcji SLEEP() funkcja wstrzymania przetwarzania na pięć sekund przed drugą partią wywołań funkcji.

Widzimy, że za drugim razem SYSDATE() został wywołany, jego wartość zwracana była inna niż za pierwszym razem. NOW() z drugiej strony zwrócił tę samą wartość za każdym razem.

Jest kilka innych rzeczy, o których należy pamiętać podczas korzystania z SYSDATE() . Na przykład SET TIMESTAMP nie ma na to wpływu (podczas gdy ma) wpływają na NOW() funkcjonować). Również SYSDATE() jest niebezpieczne dla replikacji, jeśli używane jest rejestrowanie binarne oparte na instrukcjach. Istnieją jednak sposoby radzenia sobie z tym, jeśli jest to wymagane. Więcej informacji można znaleźć w dokumentacji 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. Wybór serwera proxy bazy danych dla MySQL i MariaDB

  2. Co to jest MariaDB TX? Jak zarządzać nowym widelcem MariaDB MySQL!

  3. Jak wdrożyć klaster MariaDB w celu zapewnienia wysokiej dostępności

  4. Jak zainstalować i zabezpieczyć MariaDB na Debianie 9?

  5. Porównanie ręcznych wdrożeń baz danych z wdrożeniami automatycznymi