Na strftime() lub date() ze znacznikiem czasowym pomaga tylko date_default_timezone_set(). Może ustawiam złą lokalizację w setlocale() na localhost (WinXP)? Wracając do formatowania daty - potrzebuję wskazówek. W tym przypadku wydajność jest istotna.

Szczególnie, gdy trzeba wygenerować N dat.
Podsumowując:1. Czy konieczna jest zamiana daty na timestamp?
2. Jak przechowywać datę w bazie, aby osiągnąć najlepszą wydajność? INT czy DATETIME? Martwić się o 2038?
3. Formatować datę po stronie PHP czy SQL?
Efekty, które muszę uzyskać:1. "5 minut temu"
2. Data we właściwej strefie czasowej (ustawionej przez użytkownika)
3. "23.05.2008, 12:23" (jeśli ustawiono taki format daty), opcjonalnie: "23 May 2008 o 12:23"
4. "Dzisiaj o 12:23"
Skrypt obsługuje bazy SQLite i MySQL. Aby formatować datę po stronie bazy, prawdopodobnie muszę tworzyć przy połączeniu (lub na żądanie) funkcję do tego celu - osobno dla każdego z tych silników.
Wykonałem pomiar szybkości odczytu rekordów z datą zawierającą się w określonym przedziale czasu.
http://www.unit1.pl/pb-817Różnica jest prawie niezauważalna, jednak pola INT nieznacznie wygrywają.

Gdybyśmy jednak chcieli wyświetlić wszystkie rekordy dodane w roku 2008 lub w maju 2007 - z użyciem funkcji MONTH(), której brakuje w SQLite, pewnie wygrałby typ DATETIME. Można też wygenerować znaczniki czasu dla tych 2 punktów w PHP (godz. 0:00 GMT, 1 stycznia) - gmmktime() lub pochodna.
PHP opiera się głównie o znaczniki czasu, a nie YYYY-MM-DD.

Funkcje typu strtotime() pełnią rolę pomocniczą.