Quiero extraer los textos de las notas y las fechas de modificación de una base de datos de notas sqlite extraídas de una copia de seguridad del dispositivo iOS. Pero no puedo averiguar cómo convertir el formato de la fecha en una cadena de fecha legible.
Cómo obtuve los datos
Descubrí qué archivo tenía los datos de la nota de esta página .
Parte relevante:
Step 1. Find the Backup File in ~/Library/Application Support/MobileSync/Backup/fea….627
something like : ca3b….39c
If you have trouble seeing Library folder
defaults write com.apple.Finder AppleShowAllFiles Yes
Step 2. Copy file and rename as notes.sqlite
Lo que he intentado hasta ahora
He abierto el archivo y he confirmado que tiene el texto del cuerpo de la nota esperada en su interior. El cuerpo del texto está dentro de una tabla llamada ZNOTEBODY
. Otra tabla llamada ZNOTE
tiene un ZBODY
que parece contener índices en la columna ZNOTEBODY
mesa, y una ZMODIFICATIONDATE
columna. Aquí está el quid de la cuestión: El ZMODIFICATIONDATE
tiene un tipo de lista de TIMESTAMP
y contiene números de punto flotante.
Miré el sqlite docs y encontró esto:
SQLite no tiene una clase de almacenamiento reservada para almacenar fechas y/o horas. En su lugar, las funciones de fecha y hora incorporadas de SQLite son capaces de almacenar fechas y horas como valores de TEXTO, REAL o INTEGER:
- TEXTO como cadenas ISO8601 ("YYYY-MM-DD HH:MM:SS.SSS").
- REAL como los números de los días julianos, el número de días desde el mediodía en Greenwich el 24 de noviembre de 4714 A.C. según el proléptico calendario gregoriano.
- INTEGRA como Unix Time, el número de segundos desde 1970-01-01 00:00:00 UTC.
Las aplicaciones pueden elegir almacenar las fechas y horas en cualquiera de estos formatos y convertir libremente entre los formatos utilizando las funciones de fecha y hora incorporadas.
Así que intenté usar el sistema incorporado datetime
función con una simple SELECT datetime(ZMODIFICATIONDATE) FROM ZNOTE;
pero eso produjo valores sin sentido como 1171380-13689427-18 21:08:40
para una entrada que sé que corresponde al 2014-08-12. El valor almacenado en cuestión era 429559087.38102
.
Entonces, ¿alguien sabe qué formato se está usando aquí? O, lo que es más importante, ¿cómo convertirlo en una fecha legible?
Las siguientes fechas almacenadas corresponden todas a (diferentes puntos en) 2014-08-11, en orden de mayor a menor.
429435093.400244
429446655.298724
429447111.140259
429460783.273032
429464301.184442
(No estaba seguro de dónde publicar esto, pero como parece que podría ser específico de Apple, este parecía el mejor lugar.)