sqlite datetime тип данных с iphone NSdate? - PullRequest
4 голосов
/ 03 июня 2009

Есть ли в sqlite способ автоматически сохранять метку времени в таблице всякий раз, когда создается запись, которую я могу затем сохранить и сохранить как NSDate в своем приложении?

Или я должен вместо этого создать объект NSdate с текущим временем в моем приложении для iphone, а затем вставить его в базу данных. Если так? Каким столбцом должен быть тип данных для времени? СРОК ДЕЙСТВИЯ?

Ответы [ 3 ]

21 голосов
/ 16 июня 2009

Я использую sqlite current_timestamp (который выглядит примерно так: 2009-06-16 12:11:24). Для этого просто установите тип строки таблицы qslite на

Data type: "DATETIME"
Allow null: NO
Default value: CURRENT_TIMESTAMP

Затем используйте SQL-запрос, подобный этому:

@"INSERT INTO 'scores' ('one', 'two', 'three') VALUES ('%d', '%d', '%d')"

игнорирует дату, чтобы она автоматически получала текущее значение времени.

Затем, чтобы преобразовать это в NSDate, вы можете использовать NSDateFormatter следующим образом:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //this is the sqlite's format
NSDate *date = [formatter dateFromString:score.datetime];

и теперь у вас есть эта дата как объект NSDate. Только не забудьте выпустить NSDateFormatter, который мы выделили:)

8 голосов
/ 03 июня 2009

Нет типа данных TIMESTAMP, который вы можете использовать в SQLite, поэтому вам придется вручную вводить время, когда вы делаете INSERT. Я использую тип данных INTEGER в базе данных и конвертирую свой NSDate в следующий формат:

sqlite3_bind_double(insert_statement, 1, [myDate timeIntervalSince1970]);

И чтобы вернуть его из БД:

myDate = [NSDate dateWithTimeIntervalSince1970:sqlite3_column_double(select_statement, 1)];
0 голосов
/ 16 января 2010

Мне нравится использовать функцию sqlite julianday (), например:

insert into foo(currentDate) values (julianday('now'));

Это будет вставка значения с плавающей точкой в ​​foo.currentDate.

Вы также можете найти некоторые детали этого вопроса / ответа полезными.

Как получить столбец datetime в SQLite с целью C

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...