![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 28.11.2021 Ostrzeżenie: (0%) ![]() ![]() |
Mam funkcję: date_modify(), date_format(), date_date_set() i substr()
Zbudowałam taki kod:
Wypisuje co prawda: "Mam 49 lat.", ale po zmianie treści, które zawierają inne dane związane z datą urodzin odczytywane w całości z bazy danych (to znaczy CAŁĄ DATE: 1974-11-11, a nie jej części np: 1974 rok z jednego wiersza, 11 miesiąc z innego wiersza, 11 dzień jeszcze z innego wiersza) - chciałabym, aby działało obliczenie wieku w całości, najlepiej bez ręcznych zmian wywoływanych przez funkcję date_modify() oraz bez stosowania oddzielnych zmiennych dla części składowych daty. Nie podoba mi się też użycie funkcji substr() -> została ona użyta na siłę, by wymóc końcowy wynik niezgrabnego obliczenia: "-0049". Czy ktoś wie jak to zmodyfikować, aby funkcja z podanej daty urodzin obliczyła wiek osoby, ale w całości? Dziękuję za sugestie, podpowiedzi, ewentualne rozwiązania (IMG:style_emoticons/default/smile.gif) Ten post edytował AmyLokmart 27.04.2022, 18:32:50 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Data urodzin w bazie danych zapisana jest za pomocą metody: varchar, choć wcześniej miałam ustawione na metodę: datetime (jednak, kiedy miałam tak wcześniej ustawione to baza danych przesyłała po odczycie "napakowaną datę" to znaczy 00 00 00 2022-11-11 14:00:00:00 - zbijałam ciąg funkcjami php i w pewnym momencie uznałam, że to za bardzo komplikuje mi obliczenia To nie mozliwe ze datetime zwracalo ci jakies 00 00 00 na poczatku. Zwyczajnie zrobilas jakis blad Poza tym skoro to urodziny czyli data to nie zadne datetime tylko date Cytat zabiera więcej pamięci dla bazy danych, a ja chcę zapisać 2 miliony dat urodzin, które mam na razie w pliku. Kolejna bzdura. No po co wymyslac takie rzeczy nie znajac sie w ogole w temacie? Pole typu DATE zajmuje tylko 3 bajty, podczas gdy VARCHAR do zapisania daty zajmie ci 10 bajtow czyli ponad 3 razy wiecej. Wiec jakim cudem stosujac VARCHAR oszczedzasz pamiec? Cytat Nie umiem zrobić takich rzeczy,które rzadko są stosowane. Dopiero wtedy interesujemy się rzadko stosowanymi rzeczami, kiedy nam są potrzebne. A przecież lepiej nauczyć się później niż w ogóle prawda? smile.gif I kolejny blad, gdyz operacje na datach sa dosc czesto stosowane (IMG:style_emoticons/default/wink.gif) Cytat Wracając do tematu. Skoro datę masz jako zwykły string, to rozbij ją sobie regexem po stronie PHP lub zapytaniem w SQL na rok, miesiąc i dzień, a później zerknij tutaj: https://www.php.net/manual/en/class.datetimeimmutable.php wink.gif Salvation no miejze litosc. Po grzyba tam jakis regexp a juz tymbardziej skoro i tak potem proponbujesz obiekt DATETIME ktory spokoknie wezmien 2022-11-11 bez zadnego regexpa Poza tym rozwiazania juz podano na samym poczatku |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 02:44 |