Temat: Operacje na dacie

W bazie mysql mam wpisy w których jednym z pól jest data. Chciałbym wyswietlic te wpisy które nie są starsze niż 24h, z ostatniego tygodnia lub z ostatnego miesiąca. Jak sprawdzic ktore wpisy sa z poprzedniego dnia? Chodzi o kod php
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: Operacje na dacie

echo date("Y-m-d H:i:s", strtotime("-1 day"));
Krzysztof P.

Krzysztof P. Programista, Team
Leader

Temat: Operacje na dacie

A dlaczego chcesz to mieć w PHP?

Temat: Operacje na dacie

Michał S.:
A dlaczego chcesz to mieć w PHP?

Bo z php najlepiej mi sie pracuje, a co proponujesz innego?
Pierwsza odpowiedź w zupelności mi pomogła więc problem już rozwiązany
Mateusz Kulesza

Mateusz Kulesza Front-End Developer
at IOKI E-volution
in education,
Cons...

Temat: Operacje na dacie

myślałem, że chodzi ci o SQL
( np. " WHERE `data` < NOW() ")

ale jak mówisz, że " echo date("Y-m-d H:i:s", strtotime("-1 day")); "
to to czego potrzebowałeś to ok.

ps. mam nadzieje, że nie pobierasz wszystkich rekordów i nie sprawdzasz każdego w php !? bo to trochę niemądrze.

pps. w razie czego :
http://dev.mysql.com/doc/refman/5.0/en/datetime.html
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-f...
Krzysztof P.

Krzysztof P. Programista, Team
Leader

Temat: Operacje na dacie

Ja bym założył, że wbudowana funkcja SQL działa szybciej... ale to pewnie tylko moje zdanie.
(może za dużo triggerów napisałem i się przyzwyczaiłem do programowania też na poziomie bazy)
Marcin Tarapata

Marcin Tarapata Analityk/Tester

Temat: Operacje na dacie

Michał S.:
Ja bym założył, że wbudowana funkcja SQL działa szybciej... ale to pewnie tylko moje zdanie.
(może za dużo triggerów napisałem i się przyzwyczaiłem do programowania też na poziomie bazy)

Takie małe [OT]

Dobrze zakładasz, ale... :)

Dla przykładu duży system Siebel wykorzystuję BD tylko do trzymania danych w tabelach, cała logika aplikacji jest zaszyta w systemie. Co nam to daje? Taki system można przenosić pomiędzy MS SQL, Oracle, Informix (stare wersje Siebla podobno można było uruchomić na MySQLu) itd. nie martwiąc się o relacje, triggery, procedury itp.

Jak widać, można różnie podejść do projektowania aplikacji :)

Temat: Operacje na dacie

Mateusz Kulesza:
ps. mam nadzieje, że nie pobierasz wszystkich rekordów i nie sprawdzasz każdego w php !? bo to trochę niemądrze.

Nie martw sie nie robie tak:)
Michał C.

Michał C. Deputy Head of
Software Development

Temat: Operacje na dacie

Najcześciej robie tak, ze przechowuje date jako unixowy znacznik czasu w sekundach. Późniejsze operacje proste jak i skomplikowane są b. łatwe ;)
Krzysztof P.

Krzysztof P. Programista, Team
Leader

Temat: Operacje na dacie

Marcin Tarapata:
Takie małe [OT]

Dobrze zakładasz, ale... :)

Dla przykładu duży system Siebel wykorzystuję BD tylko do trzymania danych w tabelach, cała logika aplikacji jest zaszyta w systemie. Co nam to daje? Taki system można przenosić pomiędzy MS SQL, Oracle, Informix (stare wersje Siebla podobno można było uruchomić na MySQLu) itd. nie martwiąc się o relacje, triggery, procedury itp.

Jak widać, można różnie podejść do projektowania aplikacji :)

Jeszcze chwilę pociągnę to małe OT.
Wiesz, moim zdaniem powinno się w tedy zrobić, że to na warstwie która działa na abstrakcji bazy jest to zaszyte (czy nawet w takiej abstrakcji), wtedy zależnie czy można, czy też nie wykorzystuje natywne mechanizmy bazy, lub je symuluje.
To nie było by łatwe, ale na pewno dało by najlepszy skutek.
Zrobić to tak, że dla osoby korzystającej jest nie wiadome, czy klucz referencyjny jest na poziomie bazy czy aplikacji, po prostu z niego korzysta. Taki mocniej rozbudowana abstrakcja bazy, dodatkowo dla wspieranych wersji trzeba było by deklarować czy dana funkcja jest dostępna czy nie, jak jest to trzeba to jakoś napisać.

Ale ogólnie rozumiem jakie są założenia, tylko że w przypadku daty to nie ma chyba bazy która by tego nie obsłużyła.

konto usunięte

Temat: Operacje na dacie

Michał Czerwiński:
Najcześciej robie tak, ze przechowuje date jako unixowy znacznik czasu w sekundach. Późniejsze operacje proste jak i skomplikowane są b. łatwe ;)

ja tak samo ;]

zawsze trzymam tylko STAMP w bazie.

nigdy sformatowaną datę.
Zbigniew R.

Zbigniew R. Kierownik Działu IT,
SKOK Kujawiak

Temat: Operacje na dacie

Marcin Tarapata:
Michał S.:
Ja bym założył, że wbudowana funkcja SQL działa szybciej... ale to pewnie tylko moje zdanie.
(może za dużo triggerów napisałem i się przyzwyczaiłem do programowania też na poziomie bazy)

Takie małe [OT]

Dobrze zakładasz, ale... :)

Dla przykładu duży system Siebel wykorzystuję BD tylko do trzymania danych w tabelach, cała logika aplikacji jest zaszyta w systemie. Co nam to daje? Taki system można przenosić pomiędzy MS SQL, Oracle, Informix (stare wersje Siebla podobno można było uruchomić na MySQLu) itd. nie martwiąc się o relacje, triggery, procedury itp.

Jak widać, można różnie podejść do projektowania aplikacji :)

No właśnie. Wszystko zależy od przyjętych założeń. Zawsze zastanawiało mnie co jest bardziej poprawne - budowanie aplikacji tak aby rozwiązanie było przenośne pomiędzy różnymi bazami danych czy może skupienie się na konkretnej bazie, i tym samym pełne wykorzystanie tego co oferuje. W końcu licencja na komercyjną bazę danych kosztuje niemało więc dlaczego w pełni nie wykorzystać to za co się zapłaciło?

konto usunięte

Temat: Operacje na dacie

Kuba Świegot:
Michał Czerwiński:
Najcześciej robie tak, ze przechowuje date jako unixowy znacznik czasu w sekundach. Późniejsze operacje proste jak i skomplikowane są b. łatwe ;)

ja tak samo ;]

zawsze trzymam tylko STAMP w bazie.

nigdy sformatowaną datę.

TIMESTAMP używa się do "bieżących" dat, uwarunkowanych jego zakresem, do szerszych zastosowań należy stosować DATETIME, który ma nieco ;) większy zakres..

http://dev.mysql.com/doc/refman/5.1/en/datetime.html
Piotr Lewandowski

Piotr Lewandowski Programista
aplikacji
internetowych (PHP,
MySQL, SF2, Mag...

Temat: Operacje na dacie

Nikodem Kler:
Kuba Świegot:
Michał Czerwiński:
Najcześciej robie tak, ze przechowuje date jako unixowy znacznik czasu w sekundach. Późniejsze operacje proste jak i skomplikowane są b. łatwe ;)

ja tak samo ;]

zawsze trzymam tylko STAMP w bazie.

nigdy sformatowaną datę.

TIMESTAMP używa się do "bieżących" dat, uwarunkowanych jego zakresem, do szerszych zastosowań należy stosować DATETIME, który ma nieco ;) większy zakres..

http://dev.mysql.com/doc/refman/5.1/en/datetime.html

Domyslam sie, ze Jakub przechwouja date w sekundach i zapisuje ja np. w polu integer. Aczkolwiek moge sie mylic ;)

Temat: Operacje na dacie

Piotr Lewandowski:
Nikodem Kler:
Kuba Świegot:
Michał Czerwiński:
Najcześciej robie tak, ze przechowuje date jako unixowy znacznik czasu w sekundach. Późniejsze operacje proste jak i skomplikowane są b. łatwe ;)

ja tak samo ;]

zawsze trzymam tylko STAMP w bazie.

nigdy sformatowaną datę.

TIMESTAMP używa się do "bieżących" dat, uwarunkowanych jego zakresem, do szerszych zastosowań należy stosować DATETIME, który ma nieco ;) większy zakres..

http://dev.mysql.com/doc/refman/5.1/en/datetime.html

Domyslam sie, ze Jakub przechwouja date w sekundach i zapisuje ja np. w polu integer. Aczkolwiek moge sie mylic ;)
Aczkolwiek mozesz wyjasnic o co ci chodzi? Bo ja tez sadze, ze najlepiej, najoptymalniej i najprosciej zapisywiac date w bazie jako uniksowe sekundy (date('U') w polu typu int(11).
Marcin Laber

Marcin Laber internet
technologies
magician

Temat: Operacje na dacie

A dlaczego w takim np. MySQLu miałbyś zapisywać datę do pola typu INT mając pole typu DATETIME, dzięki któremu większość operacji związanych z datami można wykonać na poziomie zapytania SQL, a na dodatek ze zwrotem uniksowego znacznika czasu też nie byłoby żadnego problemu (UNIX_TIMESTAMP())? Zawsze mnie śmieszył zapis daty do INT'a...

konto usunięte

Temat: Operacje na dacie

Marcin Laber:
A dlaczego w takim np. MySQLu miałbyś zapisywać datę do pola typu INT mając pole typu DATETIME, dzięki któremu większość operacji związanych z datami można wykonać na poziomie zapytania SQL, a na dodatek ze zwrotem uniksowego znacznika czasu też nie byłoby żadnego problemu (UNIX_TIMESTAMP())? Zawsze mnie śmieszył zapis daty do INT'a...

Zapewne dlatego, że baza jest wtedy traktowana jedynie jako magazyn danych, a cała logika jest poza nią. Wykorzystanie bazy sprowadza się do SELECT * WHERE id=... .
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: Operacje na dacie

Swoją drogą, ile razy zdażyło wam się przenosić dużą aplikację z jednego typu bazy na drugą ?
Waldemar Jonik

Waldemar Jonik właściciel,
webmaster,
programista, JW Web
Development

Temat: Operacje na dacie

osobiscie wole zapisywac date mysq w postaci pola datetime z tego wzgledu ze czesto musze podgladac dane takimi narzedzaimi jak np phpmyadmin i zapis wprost daty jest wtedy czytelniejszy, latwiej sledzic takie rekordy, latwiej tez to wyeksportowac np excel czy innych formatow bez zastanawiania sie, mniejsze prawdopodobienstwo ze zapomni sie o tym aby pzeksztalcic date na czytelny format zapisu
Zbigniew R.

Zbigniew R. Kierownik Działu IT,
SKOK Kujawiak

Temat: Operacje na dacie

Chyba każdy silnik bazodanowy posiada wbudowane typy daty i jej obsługi. Ze względów wydajnościowych należy wykonywać operacje na bazie danych wykorzystując w jak największym stopniu natywne mechanizmy dostępu do danych/ich obróbki.

Następna dyskusja:

Operacje na dacie




Wyślij zaproszenie do