Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Operacje na datach
Forum PHP.pl > Forum > PHP
kendy77
Witam

Mam taki problem
Pobieram sobie z bazy jakas date i chcialbym aby skrypt dodawal do danej daty kilka dni czyli np. mam 2002-12-12 i chce aby dodal do tej daty np.7 dni i abym otrzymal 2002-12-19 lub np. z 2003-01-20 + 12 dni aby dalo 2003-02-01

Jak to zrobic?
Z gory dzieki za pomoc
Jabol
pobaw się date();. zamien najepierw na sekundy podem dodaj odpowiednią ilość sekund zamień jeszcze raz i UPDATE.
mhs
ewentualnie mozna sie pobawic funkcjami, ktore wbudowane sa w system. zarz. baza danych i od razu pobrac gotowy wynik z bazy danych a nie przerzucac to na dodatkowe linijki kodu w skrypcie
chfast
Cytat
ewentualnie mozna sie pobawic funkcjami, ktore wbudowane sa w system. zarz. baza danych i od razu pobrac gotowy wynik z bazy danych a nie przerzucac to na dodatkowe linijki kodu w skrypcie

Racja. Polecam dział Date Calculations z toturiala MySQL do poczytania.
smaku
[php:1:fea937d03c]<?php

$data = date("Y-m-d");
?>[/php:1:fea937d03c]
[sql:1:fea937d03c]UPDATE baza_z_data SET nowa_data=DATE_ADD('$data', INTERVAL 7 DAY) where stara_data='$data';[/sql:1:fea937d03c]

:}
kendy77
ha..ale caly problem w tym ze ja nie chce nic zmieniac w bazie
tam ma nadal byc to co bylo a roznica w dniach ma byc uzyskiwana tylko po to by pokazac ja na stronie
czyli wszystko powinno sie odbyc w kodzie php a nie sql


pozdrawiam
mhs
ok, ja dalej sie bede upieral aby czynnosc pobrania daty + te kilka dni przerzucic na serwer bazy danych

ponizej przedstawiam Ci jak to zrobic w MySQL'u

mamy przykladowa baze danych
Kod
+-------+------------------+------+-----+---------+----------------+

| Field | Type             | Null | Key | Default | Extra          |

+-------+------------------+------+-----+---------+----------------+

| id    | int(10) unsigned |      | PRI | NULL    | auto_increment |

| data  | date             | YES  |     | NULL    |                |

+-------+------------------+------+-----+---------+----------------+


w niej nastepujace dane
Kod
mysql> SELECT * FROM test;

+----+------------+

| id | data       |

+----+------------+

|  4 | 2002-10-12 |

|  5 | 2003-10-15 |

|  6 | 2003-11-12 |

+----+------------+

3 rows in set (0.00 sec)


nastepnie chcemy pobrac z tej bazy wszystkie id, date pierwotna znajdujaca sie w polu data oraz date + 17 dni. wyglada to nastepujaco:
zapytanie:
[sql:1:f064bc455c]
SELECT id, data, DATE_ADD(data, INTERVAL 17 DAY) FROM test;
[/sql:1:f064bc455c]
wynik zapytania:
Kod
+----+------------+---------------------------------+

| id | data       | DATE_ADD(data, INTERVAL 17 DAY) |

+----+------------+---------------------------------+

|  4 | 2002-10-12 | 2002-10-29                      |

|  5 | 2003-10-15 | 2003-11-01                      |

|  6 | 2003-11-12 | 2003-11-29                      |

+----+------------+---------------------------------+

3 rows in set (0.00 sec)


ps. zauwaz, ze dla krotki o numerze id = 5 system sam wyliczyl, ze 15 + 17 to jest 32 i w zwiazku z tym ze miesiac pazdziernik ma tylko 31 dni to sam 'przeskoczyl' na listopad (prosze sie tylko nie nabijac z mojego tlumaczenia)

pozdrawiam
zombie
A może by tak po prostu [manual:411a888be6]strtotime[/manual:411a888be6]:
[php:1:411a888be6]<?php
$data=mktime(0,0,0,1,23,2002);
echo(date("Y-m-d", strtotime("+3 day", $data)));
?>[/php:1:411a888be6]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.