Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Operacje na datach
kendy77
post 2.11.2003, 11:52:23
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 11.10.2003

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Jabol
post 2.11.2003, 12:22:28
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


pobaw się date();. zamien najepierw na sekundy podem dodaj odpowiednią ilość sekund zamień jeszcze raz i UPDATE.
Go to the top of the page
+Quote Post
mhs
post 2.11.2003, 13:07:43
Post #3





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


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
Go to the top of the page
+Quote Post
chfast
post 2.11.2003, 19:26:48
Post #4





Grupa: Zarejestrowani
Postów: 222
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Wrocław

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


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.


--------------------
pozdrawiam, chfast
Go to the top of the page
+Quote Post
smaku
post 3.11.2003, 14:59:53
Post #5





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 19.08.2003

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


[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]

:}


--------------------
yyy...
Go to the top of the page
+Quote Post
kendy77
post 3.11.2003, 16:27:49
Post #6





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 11.10.2003

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


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
Go to the top of the page
+Quote Post
mhs
post 3.11.2003, 22:56:01
Post #7





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


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
Go to the top of the page
+Quote Post
zombie
post 4.11.2003, 09:35:09
Post #8





Grupa: Zarejestrowani
Postów: 296
Pomógł: 0
Dołączył: 9.05.2002
Skąd: Warszawa

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


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]


--------------------
audaces fortuna iuvat!
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:45