decoration Wpisy na blogu decoration

decoration
decoration
13.12 2006
16:17

MySQL - funkcje przetwarzania daty

Za pomocą pewnych wbudowanych funkcji w bardzo wygodny sposób można przetwarzać daty w bazie danych MySQL. Przedstawię tutaj kilka funkcji, które można wykorzystać do tego celu.

Funkcje podstawowe

Pobieranie aktualnej daty: CURDATE(), lub CURRENT_DATE. Funkcje wypisują aktualną datę na serwerze bazy danych MySQL w formacie: RRRR-MM-DD. W przypadku użycia polecenia SELECT CURDATE(); otrzymamy datę 2006-12-13


Pobieranie aktualnego czasu: CURTIME(), lub CURRENT_TIME. Funkcja wypisuje aktualny czas na serwerze bazy danych MySQL w formacie HH:MI:SS. W przypadku użycia polecenia SELECT CURTIME(); otrzymamy czas 00:16:24


Pobieranie aktualnej daty i czasu: NOW(), SYSDATE(), lub CURRENT_TIMESTAMP. Funkcje te zwracają aktualną datę formacie: RRRR-MM-DD HH:MI:SS. W Przypadku użycia polecenia SELECT NOW(); otrzymamy 2006-12-13 00:21:49


Dodawanie interwałów do dat: DATE_ADD(data, INTERVAL jednostki). Funkcja ta dodaje do podanej daty określoną liczbę jednostek. W Przypadku użycia polecenia SELECT DATE_ADD(NOW(), INTERVAL 1 DAY); otrzymamy aktualną datę z dniem zwiększonym o 1.


Odejmowanie interwałów od dat: DATE_SUB(data, INTERVAL jednostki). Funkcja ta odejmie od podanej daty określoną liczbę jednostek. W przypadku użycia polecenia SELECT DATE_SUB(NOW(), INTERVAL 1 DAY); otrzymamy aktualną datę z dniem mniejszym o 1.

 

Składowe daty

Istnieje kilkanaście funkcji pozwalających pobrać określone składowe daty.

 

  • DAYOFWEEK(data) – zwraca dzień tygodnia w postaci cyfry
  • WEEKDAY(data) – zwraca dzień tygodnia w postaci cyfry (0 - Poniedziałek)
  • DAYOFMONTH(data) – zwraca dzień miesiąca w postaci cyfry
  • DAYOFYEAR(data) – zwraca dzień w roku w postaci cyfry
  • MONTH(data) – zwraca numer miesiąca w roku
  • DAYNAME(data) – zwraca pełną nazwę dnia tygodnia
  • MONTHNAME(data) – zwraca pełną nazwę miesiąca
  • QUARTER(data) – zwraca numer kwartału
  • WEEK(data) – zwraca numer tygodnia w roku
  • YEAR(data) – zwraca rok
  • HOUR(data) – zwraca godzinę
  • MINUTE(data) – zwraca liczbę minut
  • SECOND(data) – zwraca liczbę sekund
  • TO_DAYS(data) – zwraca liczbę dni, które minęły od początku naszej ery
  • FROM_DAYS(dni) – zwraca datę, którą wskazuje liczba dni od początku naszej ery

 

Przekształcanie formatu daty


Do przekształcania formatu zwracanej przez MYSQL daty służą funkcja DATE_FORMAT(data,format). Przykład użycia: SELECT DATE_FORMAT(NOW(),'%d %M %Y'); zwróci datę w formacie 13 December 2006. Poniżej znajduje się pełna lista znaczników formatu daty dla MySQL:

 

  • %a – zwraca skróconą nazwę dnia tygodnia
  • %b – zwraca skróconą nazwę miesiąca
  • %c – zwraca numer miesiąca
  • %D – zwraca dzień miesiąca wraz z liczebnikiem porządkowym
  • %d – zwraca dzień miesiąca w formacie dwucyfrowym
  • %e – zwraca dzień miesiąca
  • %f – zwraca liczbę mikrosekund
  • %H – zwraca godzinę w formacie 24 godzinnym, dwucyfrowym
  • %h – zwraca godzinę w formacie 12 godzinnym, dwucyfrowym
  • %i – zwraca liczbę minut
  • %j – zwraca numer dnia w roku w formacie trzycyfrowym
  • %k – zwraca godzinę w formacie 24 godzinnym
  • %l – zwraca godzinę w formacie 12 godzinnym
  • %M – zwraca pełną nazwę miesiąca
  • %m – zwraca numer miesiąca
  • %p – zwraca AM, lub PM w zależności od pory dani
  • %r – zwraca czas w formacie 12 godzinnym
  • %S – zwraca liczbę sekund
  • %T – zwraca czas w formacie 24 godzinnym
  • %U – zwraca numer tygodnia (niedziela jest dniem pierwszym, liczone od 00)
  • %u – zwraca numer tygodnia (poniedziałek jest dniem pierwszym, liczone od 00)
  • %V – zwraca numer tygodnia (niedziela jest pierwszym dniem, liczone od 01)
  • %v – zwraca numer tygodnia (poniedziałek jest pierwszym dniem, liczone od 01)
  • %W – zwraca pełną nazwę dnia tygodnia
  • %X – zwraca rok danego tygodnia (niedziela jest pierwszym dniem)
  • %x – zwraca rok danego tygodnia (poniedziałek jest pierwszym dniem)
  • %Y – zwraca rok w formacie czterocyfrowym
  • %y – zwraca rok w formacie dwucyfrowym

 

Kilka przykładów zastosowania


Powyższe wywołania funkcji nie znajdą jednak większego zastosowania w operacjach na bazie danych. Najczęstsze zastosowanie mają one przy warunku WHERE. Pozwalają one precyzyjnie określić, które dane mają zostać pobrane z bazy, zaktualizowane lub usunięte. Zastosowanie również mają przy dodawaniu nowych rekordów do bazy.


Dodawanie nowych danych z aktualną datą:

INSERT INTO test.test (vol,data) VALUES('aaa',NOW());


Dodawanie nowych danych z jutrzejszą data:

INSERT INTO test.test (vol,data) VALUES('aaa',DATE_ADD(NOW(),INTERVAL 1 DAY));


Dodawanie nowych danych z datą sprzed roku:

INSERT INTO test.test (vol,data) VALUES('aaa',DATE_SUB(NOW(),INTERVAL 1 YEAR));


Pobieranie danych starszych, niż 1 rok:

SELECT * FROM test.test WHERE test.data < DATE_SUB(NOW(),INTERVAL 1 YEAR);


Pobieranie danych z przedziału jutro-wczoraj:

SELECT * FROM test.test WHERE test.data > DATE_SUB(NOW(),INTERVAL 1 DAY) AND test.data < DATE_ADD(NOW(),INTERVAL 1 DAY);


Pobieranie danych z wczorajszą datą:

SELECT * FROM test.test WHERE test.data LIKE CONCAT(DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 DAY),'%Y-%m-%d'),'%');


Wyświetlanie samej daty, bez czasu:

SELECT id, DATE_FORMAT(data,'%Y-%m-%d') as data FROM test.test;


Zwiększanie daty o 1 rok:

UPDATE test.test SET data = DATE_ADD(data, INTERVAL 1 YEAR) WHERE id='1';


Obliczanie różnicy dni między aktualną datą, a wybraną:

SELECT id,TO_DAYS(NOW()) - TO_DAYS(data) as roznica FROM test.test;


Zwracanie dnia tygodnia w postaci:

SELECT id,DAYNAME(data) as dzien_tygodnia FROM test.test;

 



Komentarze:

13.04 2010
12:42

crees Bardzo ciekawe. Czesto szukalem roznych opcji jak biegac po datach w php'ie no ale teraz widze ze pomocny i to bardzo jest mysql. Thnx wielkie :*

22.04 2010
13:24

flash Świetnie jest to opisane !
GRATULUJE !!

23.04 2010
21:33

matematyk Świetnie wytłumaczone!!
Dzięki, przydało mi się ;)

24.04 2010
13:25

pbas Prosto, zwięźle i rzeczowo. Bardzo dziękuję za ten artykuł - przydał się!

07.05 2010
10:21

LukaszB Szacunek dla autora, najważniejsze rzeczy związane z datą zgromadzone w jednym miejscu i opisane bardzo dobrze!

Dodaj komentarz:

Nick:
URL:
Komentarz:
Wynik dzialania z obrazka =

Powrót



Copyleft (C) tom000.info 2004-2010. Some rights reserved.