Esto podría parecer una locura a una gran cantidad de desarrolladores que les gusta aprovechar las funciones de base de datos,
Pero después de exhaustivos problemas para pensar, crear y corregir las aplicaciones de mysql y postgrsql con php comparando las funciones de fecha, he llegado a la conclusión (para mí), que la manera más sencilla, que es la más simple con menos dolores de cabeza SQL no es aprovecha cualquiera de ellos.
¿Por qué? porque si está desarrollando en un lenguaje de middleware como PHP, PHP tiene todas estas funciones, y son más fáciles de implementar en la aplicación ode que la comparación de enteros. PostgreSQL marca de tiempo no se == marca de tiempo Unix y de marca de tiempo Unix MySQL PostgreSQL no es de marca de tiempo o los oráculos .. se vuelve más difícil al puerto si utiliza marcas de tiempo de bases de datos ..
tan sólo tiene que utilizar un número entero, no una marca de tiempo, ya que el número de segundos desde el 1 de enero de 1970 a medianoche. y no importa las marcas de tiempo de la base de datos. , y usa gmdate() y almacena todo como tiempo gmt para evitar problemas con la zona horaria.
si necesita buscar, ordenar o comparar el día de otros datos, o el mes o el año o el día de la semana, o cualquier cosa, en su aplicación, y tipo de datos INTEGER para time_day, time_hour, time_seconds. .o lo que sea que quieras indexar para buscar, se crearán bases de datos más fluidas y más portátiles. puede simplemente usar un campo, en la mayoría de los casos: INTEGER time_created NO NULO
(más campos en su fila de base de datos es el único inconveniente para esta solución que he encontrado, y eso no causa tantos dolores de cabeza, o tazas de café :)
Las funciones de la fecha php son excepcionales para comparar las fechas, pero en mysql o postgresql, comparando fechas? nah .. use las comparaciones enteras sql
me doy cuenta de que puede parecer más fácil usar CURRENT_TIMESTAMP en una función de inserción. ¡DECIR AH! no se deje engañar.
No puede hacer DELETE FROM SESSION_TABLE WHERE time-initialized < '2 days'
si time-intitialized es una marca de tiempo postgresql. pero se puede hacer:
DELETE FROM SESSION_TABLE WHERE time_initialized < '$yesterday'
Mientras configura $ ayer en php como el número entero de segundos desde el año 1970 que fue ayer.
Esto facilita el mantenimiento de los registros de sesión que la comparación de marcas de tiempo en las instrucciones de selección postgresql.
SELECCIONAR edad(), SELECCIONAR extraer(), y asbtime son dolores de cabeza en sí mismos. Esta es sólo mi opinión.
que puede hacer suma, resta, <,>, todas con fecha de objetos PHP
_peter_sysko U4EA Networks, Inc.
Este es de hecho el más cercano. Dejar caer todos los decimales no debería ser un problema, aunque me entristece la falta de una función incorporada para hacer esto, como MySQL. – TheLizardKing
No debería haber decimales, ya que estará dividiendo enteros. – araqnid
araqnid, yo también pensé que sí, pero acabo de probar y de hecho float. –