Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodanie dni do okreslonej daty
Forum PHP.pl > Forum > Bazy danych > MySQL
macdavido
Witajcie ponownie
probuje zrobic jakies porownanie na dacie ale nie bardzo moge doszukac sie jak mozna, wiec moze musze trzasnac jakas funkcje przeliczajaca.

Mam date startowa oraz koncowa w bazie i ilosc dni jako zmienna w skrypcie php. W bazie MySQL tabela zawiera kolumne data1 (startowa) data2 (koncowa) wszystkie sa typu DATE.

Teraz w php mam cos takiego w zmiennych:

  1. <?php
  2. $startdate = "2006.06.17";
  3. $iloscdni = 14;
  4. ?>

chodzi o zapytanie, ktore wyswietli wszystkie pozycje spelniajace warunek ze mieszczacy sie w tym przedziale. Nie wychodzi mi sprawdzanie pola daty na zasadzie:

  1. SELECT * FROM tabela WHERE data1>='$startdate' AND data2<='$startdate+$iloscdni'

Powyzsze ogolnie jest wlasnie opisem problemu i o co mi w warunku chodzi, jednak niestety tak latwo sie nie da. Czy jest to jakos w prosty sposob do uzyskania?
nospor
DATE_ADD
http://dev.mysql.com/doc/refman/5.0/en/dat...-functions.html
Ino data ma byc w formacie rrrr-mm-dd a nie rrrr.mm.dd

No i w php mozna takie numerki robic przy uzyciu chociazby strtotime()
macdavido
Powiem tak
to forum jest normalnie bezcenne
Dzieki wielkie za podpowiedz biggrin.gif

Do tego te kropki zamiast myslnika :-)
sprobuje to zaimplementowac snitch.gif
bendi
Cytat(nospor @ 19.06.2006, 12:46 ) *
Ino data ma byc w formacie rrrr-mm-dd a nie rrrr.mm.dd

Nie całkiem - otóż MySQL dopuszcza pewne odstępstwa od sztywnych reguł daty w formacie iso-8601 i tak można pominąć zera w przypadku dnia i miesiąca oraz dodać inne separatory byle cały czas były takie same:
  1. INSERT INTO tabela (DATA) VALUES('2005.1.24');
  2. INSERT INTO tabela (DATA) VALUES('2005.01.24');
  3. INSERT INTO tabela (DATA) VALUES('2005/1/24');

Sa poprawnymi stwierdzeniami i odpowiadają:
  1. INSERT INTO tabela (DATA) VALUES('2005-01-24');
nospor
@bendi masz jak (prawie) zwykle rację smile.gif
Jesli by chodzilo tylko o mysql to faktycznie mozna uzywac roznych separatorów. Ja mialem jednak rowniez na mysli zapodanie tej daty do strtotime(). Tam podanie rrrr.mm.dd da nam zle wyliczenie. Ale moja wina w zlym miejsu podalem to zastrzezenie odnosnie separatora.
Oczywiscie Twoja uwaga jest jak najbardziej sluszna, aczkolwiek osobiscie wole trzymac sie standardu by sie kiedys tam nie pomylic.
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.