główna strona
wróć
[MySQL] Jak dodać lub odjąć dni, miesiące lub lata od określonej daty?
Ostatnia zmiana: 22.11.2008, Autor artykułu: Waldemar Miotk
artykul-0017.jpg

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ć statystyki 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 DAY); # odejmuje 5 dni od aktualnej daty

Poniżej przedstawiam tabelkę z możliwymi do zastosowania jednostkami:

Jednostka Zapis w funkcji
YEAR_MONTH ''YY-MM''
DAY_HOUR ''DD-HH''
DAY_MINUTE ''DD HH:MI''
DAY_SECOND ''DD HH:MI:SS''
HOUR_MINUTE ''HH:MI''
HOUR_SECOND ''HH:MI:SS''
MINUTE_SECOND ''MI:SS''
DAY DD
MONTH MM
YEAR YY
HOUR HH
MINUTE MI
SECOND SS

Składnia ogólna funkcji:

  • DATE_ADD(data_początkowa, INTERVAL liczba jednostki)
  • DATE_SUB(data_początkowa, INTERVAL liczba jednostki)

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(3)

Podpis:
W celu potwierdzenia, zaznacz pole pod znakiem: U
Capcha
XD - IP: xxx.xxx.240.32, Data: 03.02.2021 08:47:15
XD
Eric Jones - IP: xxx.xxx.14.115, Data: 04.11.2020 08:56:33
Cool website!

My name’s Eric, and I just found your site - miotk.eu - while surfing the net. You showed up at the top of the search results, so I checked you out. Looks like what you’re doing is pretty cool.

But if you don’t mind me asking – after someone like me stumbles across miotk.eu, what usually happens?

Is your site generating leads for your business?

I’m guessing some, but I also bet you’d like more… studies show that 7 out 10 who land on a site wind up leaving without a trace.

Not good.

Here’s a thought – what if there was an easy way for every visitor to “raise their hand” to get a phone call from you INSTANTLY… the second they hit your site and said, “call me now.”

You can –

Talk With Web Visitor is a software widget that’s works on your site, ready to capture any visitor’s Name, Email address and Phone Number. It lets you know IMMEDIATELY – so that you can talk to that lead while they’re literally looking over your site.

CLICK HERE http://www.talkwithcustomer.com to try out a Live Demo with Talk With Web Visitor now to see exactly how it works.

Time is money when it comes to connecting with leads – the difference between contacting someone within 5 minutes versus 30 minutes later can be huge – like 100 times better!

That’s why we built out our new SMS Text With Lead feature… because once you’ve captured the visitor’s phone number, you can automatically start a text message (SMS) conversation.

Think about the possibilities – even if you don’t close a deal then and there, you can follow up with text messages for new offers, content links, even just “how you doing?” notes to build a relationship.

Wouldn’t that be cool?

CLICK HERE http://www.talkwithcustomer.com to discover what Talk With Web Visitor can do for your business.

You could be converting up to 100X more leads today!
Eric

PS: Talk With Web Visitor offers a FREE 14 days trial – and it even includes International Long Distance Calling.
You have customers waiting to talk with you right now… don’t keep them waiting.
CLICK HERE http://www.talkwithcustomer.com to try Talk With Web Visitor now.

If you'd like to unsubscribe click here http://talkwithcustomer.com/unsubscribe.aspx?d=miotk.eu
Dominik Nowicki - IP: xx.xxx.122.190, Data: 07.05.2019 13:01:13
Chujowy ten poradnik
(c)2007-2016 Waldemar Miotk - ostatnia aktualizacja silnika 06.02.2016 - Twój IP: 3.238.98.214. Ta strona, aby lepiej działać, używa plików cookie przechowywanych na komputerach użytkowników. Wszystkie prawa do tekstów zamieszczonych na stronie są zastrzeżone, chyba że przy konkretnym tekście znajduje się inna informacja.
go up