Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dodawanie dni dni nowszej daty
tomi127
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.03.2013

Ostrzeżenie: (0%)
-----


Witam, próbuję się uporać z pewnym problemem. Mianowicie chciałbym, aby rekord typu DATE został uaktualniony w zależności od spełnienia danego warunku:
- Jeżeli data zawarta w rekordzie JEST NOWSZA niż CURDATE() wtedy do aktualnego rekordu dodaj zadaną liczbę dni, w przeciwnym razie dodaj zadaną liczbę dni do CURDATE() i zapisz wynik w tym rekordzie

Udało mi się sklecić takie zapytanie
  1. UPDATE users SET active=DATE_ADD(CASE activeto WHEN (CURDATE() < active) THEN CURDATE() ELSE active END, INTERVAL '2' DAY) WHERE nickname='adres@mail.com'

Niestety, bez względu na wynik porównania (true/false), te dwa dni są dodawane do daty zapisanej w active.

Help :-)
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  1. UPDATE users SET active=CASE activeto WHEN (CURDATE() < active) THEN DATE_ADD(CURDATE(), INTERVAL '2' DAY) ELSE DATE_ADD(active, INTERVAL '2' DAY) END WHERE nickname='adres@mail.com'
Go to the top of the page
+Quote Post
tomi127
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.03.2013

Ostrzeżenie: (0%)
-----


Dzięki, co prawda musiałem jeszcze nieco zmodyfikować zapytanie, aby działało tak jak oczekiwałem, jednak Twoja odpowiedź naprowadziła mnie na rozwiązanie. Finalnie zapytanie wygląda tak:
  1. UPDATE users SET active = CASE WHEN (CURDATE() > active) THEN DATE_ADD(CURDATE(), INTERVAL '2' DAY) ELSE DATE_ADD(active, INTERVAL '2' DAY) END WHERE nickname='adres@mail.com'
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 22:51