2008-10-30 12 views
15

Estoy desarrollando una aplicación de iPhone que conserva los datos en una base de datos SQLite3.Fechas persistentes para SQLite3 en una aplicación de iPhone

Para cada fila persisto Deseo incluir una 'fecha de creación' y una 'última fecha de modificación'

Mi pregunta es ¿cuál es el método recomendado para el almacenamiento de esta información en una tabla?

Las propiedades se representan como NSDate en mi aplicación, pero no estoy seguro de cómo representar esta información en mi tabla.

Parece que SQLite3 proporciona un tipo DATETIME pero no tiene una comprensión nativa de cómo analizar esta información.

Cualquier ayuda sería muy apreciada.

Gracias de antemano.

Respuesta

20

Me suelen utilizar un doble, algo así como:

sqlite3_bind_double(statement, index, [dateObject timeIntervalSince1970]); 

donde dateObject es un NSDate *. Entonces, cuando se obtienen los datos de la DB, utilice

[NSDate dateWithTimeIntervalSince1970:doubleValueFromDatabase]; 
+0

estoy tratando de acceder usando FMDatabase, pero estoy entrando en los registros utilizando una interfaz gráfica de usuario, cada vez que no recibo ningún registro. por favor revise mi pregunta y sugiera: http://stackoverflow.com/questions/8772601/date-entry-into-database-through-gui-for-date-which-isdable -by-fmdatabase –

2

According to the docs no hay ningún tipo de datos DATETIME! Utilizo un tipo de datos real y convierto un NSDate en real utilizando el método timeIntervalSinceReferenceDate.

8

tienda como un típico C-tiempo valor (por ejemplo el valor time_t/int devuelto por tiempo()) en una columna de UNSIGNED INT. Convertir al igual que drewh dijo con NSDate:

- timeIntervalSince1970 
- dateWithTimeIntervalSince1970:(double)value 

Excepto tienda como un entero, a menos que necesite granularidad menos de un segundo (que, en general, para la creada por el/la última modificación, es una exageración). Las entradas sin firmar son mucho más pequeñas y fáciles de procesar que las dobles. Si bien esto ya no importa en la mayoría de las aplicaciones de escritorio y web, sin duda ayuda en el iPhone. Cada poquito ayuda.

Una de las ventajas de los C veces que la mayoría de las personas no se dan cuenta es que son agonósticas de la zona horaria. Si alguna vez necesita admitir varias zonas horarias, esto es útil.

7

convierto a/de las cadenas ISO8601: http://en.wikipedia.org/wiki/ISO_8601

Mucho más readible/hackable de intervalos de tiempo.

+0

Lo mismo aquí. Claro que es un poco más lleno de espacio, pero es mucho mejor leer en una sesión de depuración. – bwinton

+0

Esta es la "buena" respuesta a este problema. –

+0

¿Cómo NSPredifica búsquedas de rango de fechas en estos? –

Cuestiones relacionadas