Cela peut paraître fou à beaucoup de développeurs qui aiment profiter des fonctions de base de données,
Mais après exhaustive des problèmes de réflexion, de création et de bugfixing applications pour mysql et postgrsql avec php en comparant les fonctions de date, je suis venu à la conclusion (pour moi), que le moyen le plus facile, c'est le plus simple, avec moins de SQL maux de tête est de ne pas prendre avantage de l'un d'eux.
Pourquoi? parce que si vous êtes un développement middleware langage comme PHP, PHP a toutes ces fonctions, et ils sont plus faciles à mettre en œuvre dans l'application ode comparer des nombres entiers. PostgreSQL horodatage n'est PAS == TIMESTAMP UNIX et MySQL UNIX TIMESTAMP n'est PAS PostgresQL ou Oracles timestamp.. il devient plus difficile de port si vous utilisez la base de données des horodateurs..
utilisez donc un entier, pas un timestamp,
comme le nombre de secondes depuis le 1er janvier 1970 à minuit. et jamais l'esprit de la base de données des horodateurs.
et utiliser gmdate() et stocker tout ce que l'heure gmt pour éviter le fuseau horaire questions.
si vous avez besoin de recherche, de tri ou de comparer la journée à partir d'autres données, ou le mois ou l'année ou le jour de la semaine, ou quoi que ce soit, dans votre application,
et le type de données ENTIER pour time_day, time_hour, time_seconds.. ou ce que vous wnat à l'index à rechercher fera pour une peau plus lisse et plus portable des bases de données.
vous pouvez simplement utiliser un champ, dans la plupart des cas: INTEGER time_created PAS NULL
(plus de champs dans votre base de données en ligne est le seul inconvénient de cette solution que j'ai trouvé, et ce n'est pas tant la cause de nombreux maux de tête, ou des tasses de café :)
php les fonctions de date sont en circulation à comparer des dates,
mais dans mysql ou postgresql, en comparant les dates ? nah.. utilisez entier sql comparaisons
je me rends compte qu'il peut SEMBLER plus facile à utiliser CURRENT_TIMESTAMP sur une fonction d'insertion. HA!
ne vous laissez pas berner.
Tu ne peux pas faire DELETE FROM SESSION_TABLE WHERE time-initialized < '2 days'
si le temps intitialized postgresql est un timestamp.
mais vous POUVEZ le faire:
DELETE FROM SESSION_TABLE WHERE time_initialized < '$yesterday'
Aussi longtemps que vous définissez $hier en php comme le nombre entier de secondes depuis 1970 qui était hier.
C'est plus facile de ménage des enregistrements de session que de comparer les horodatages dans postgresql instructions select.
SÉLECTIONNEZ l'âge(), SELECT extract(), et asbtime sont des maux de tête dans l'un d'eux-mêmes. c'est juste mon avis.
vous pouvez faire l'ajout, soustraction, <, >, tous avec php date d'objets
_peter_sysko
U4EA Networks, Inc.