Strona testowana na następujących przeglądarkach internetowych Mozilla Firefox 3.6.3, Google Chrome 3.0, Internet Explorer 8.0 |
Gościmy
Naszą witrynę przegląda teraz 18 gości| Jak dodać lub odjąć dni miesiące lub lata od określonej daty? |
| Baza danych MySQL | |||||||||||||||||||||||||||||||
| sobota, 22 listopada 2008 21:20 | |||||||||||||||||||||||||||||||
|
Czasami potrzebujemy sprawdzić jaka data będzie z 5 dni, za 5 miesięcy lub za 5 lat. A może jaka data była 5 lat temu lub 2 lata i pięć miesięcy temu? Takie dane są potrzebne aby na przykład prowadzić statysktyki odwiedzania naszej strony w określonych odstępach czasowych. Możemy też potrzebować informacji o zdarzeniach występujących od daty naszego urodzenia przez 5 miesięcy. Zresztą zastosowań jest wiele. Przy pomocy MySQL jesteśmy w stanie otrzymać te wszystkie wyniki bezpośrednio w zapytaniu SQL.
MySQL jest bardzo elastyczny w rozwiązaniu tego problemu. Posiada dwie ciekawe funkcje DATE_ADD() oraz DATE_SUB(). Funkcja DATE_ADD() dodaje do określonej daty określoną liczbę jednostek : SELECT DATE_ADD(NOW(), INTERVAL 5 DAY); # dodaje 5 dni do aktualnej daty
Funkcja DATA_SUB() odejmuje od określonej daty określoną liczbę jednostek : SELECT DATE_SUB(NOW(), INTERVAL 5 DAT); # odejmuje 5 dni od aktualnej daty
Poniżej przedstawiam tabelkę z możliwymi do zastosowania jednostkami :
Składnia ogólna funkcji :
Znak rozdzielający poszczególne wartości nie ma większego znaczenia, ważne tylko aby nie był cyfrą. Pokazałem to na przykładach poniżej. Przykłady zastosowania funkcji : SELECT DATE_ADD(NOW(), INTERVAL '5-5' YEAR_MONTH); # dodaje 5 lat i 5 miesięcy do aktualnej daty
SELECT DATE_ADD(NOW(), INTERVAL '5-5' DAY_HOUR); # dodaje 5 dni i 5 godzin do aktualnej daty SELECT DATE_ADD(NOW(), INTERVAL '5 5 5' DAY_MINUTE); # dodaje 5 dni i 5 godzin i 5 minut do aktualnej daty SELECT DATE_ADD(NOW(), INTERVAL '5#5#5#5' DAY_SECOND); # dodaje 5 dni, 5 godzin, 5 minut i 5 sekund do aktualnej daty SELECT DATE_ADD(NOW(), INTERVAL '5!5' HOUR_MINUTE); # dodaje 5 godzin i 5 minut do aktualnej daty SELECT DATE_ADD(NOW(), INTERVAL '5&5&5' HOUR_SECOND); # dodaje 5 godzin, 5 minut i 5 sekund do aktualnej daty SELECT DATE_ADD(NOW(), INTERVAL 1000 YEAR); # dodaje 1000 lat do aktualnej daty SELECT DATE_SUB(NOW(), INTERVAL 1000 YEAR); # odejmuje 1000 lat od aktualnej daty SELECT DATE_SUB(NOW(), INTERVAL '5!5' HOUR_MINUTE); # odejmuje 5 godzin i 5 minut od aktualnej daty SELECT DATE_SUB(NOW(), INTERVAL '5#5#5#5' DAY_SECOND); # odejmuje 5 dni, 5 godzin, 5 minut i 5 sekund od aktualnej daty SELECT DATE_SUB('2008-01-01', INTERVAL 5 YEAR); # odejmuje 5 lat od dnia 1 stycznia 2008 roku SELECT DATE_SUB('2008-01-01', INTERVAL 5 HOUR); # 5 godzin od dnia 1 stycznia 2008 roku - wynik : 2007-12-31 19:00:00 SELECT DATE_ADD('2008-01-01 10', INTERVAL 5 HOUR); # dodaje 5 godzin do dnia 1 stycznia 2008 roku godziny 10:00 - wynik : 2008-01-01 15:00:00 SELECT DATE_SUB('2008-01-01 10:49:50', INTERVAL '5%5%5%5' DAY_SECOND); # odejmuje 5 dni, 5 godzin, 5 minut i 5 sekund do dnia 1 stycznia 2008 roku godziny 10:49 i 50 sekund - wynik : 2007-12-27 05:44:45 SELECT DATE_ADD( datawtabeli, INTERVAL 5 DAY ) FROM tabela; # wyświetla wszystkie pola datawtabeli zwiększone o 5 dni
|
Komentarze
| Cytować
| Cytować
| Cytować
Kanał RSS z komentarzami do tego postu.