Изменить формат даты в sqlite

Измените этот формат даты в sqlite db 12/10/11 to 12-10-11 (mm-dd-yy) Я не могу сделать это. Я нуб в sqlite и должен проанализировать это значение SELECT strftime('%d-%m-%Y',Date) from report но я получаю нулевое значение, так как sqlite дБ исключает значение в mm-dd-yy так как мне конвертировать формат 12/10/11 to 12-10-11 (mm-dd-yy). Спасибо заранее. Очень ценю помощь.

1 ответ

Решение

Краткий ответ:

Если у вас есть текстовая строка хранится как "12/10/11" что вы хотите сообщить как "12-10-11", вы должны использовать replace(X,Y,Z) функция, чтобы заменить вхождения Y в X с Z, Таким образом:

SELECT replace('12/24/11','/','-');

вернусь:

12-10-11

Длинный ответ:

Во-первых, на самом деле даты не существуют как правильный тип данных в SQLite. Они сохраняются как значения TEXT, REAL или INTEGER. Смотрите дату и время в SQLite. Так что это зависит от того, как ваша дата была сохранена в базе данных.

Во-вторых, вы, кажется, подразумеваете, что вы сохранили дату в mm/dd/yy "формат. Это не является действительным / полезным TEXT формат для хранения значений даты / времени (поскольку дата не может быть отсортирована, не может использоваться в операциях "больше чем" и "меньше чем", не может использоваться в функциях даты SQLite и т. д.). Вы действительно хотите хранить значения даты и времени в одном из форматов, перечисленных в разделе "Строки времени" документа функций даты и времени.

Итак, как правило, вы должны хранить значения даты / времени в одном из этих форматов, используйте NSDateFormatter чтобы преобразовать это в NSDate когда вы получаете его из базы данных. И когда вы хотите отобразить значение даты в вашем приложении, используйте любой формат, который вы хотите для вывода.

Но, если вам все равно, что даты хранятся в виде текстовых строк и не могут эффективно использоваться как даты в SQLite, просто относитесь к ним как к старым TEXT строка и использование TEXT функции, такие как replace(X,Y,Z) заменить вхождения "/" с "-", как указано выше.

Другие вопросы по тегам