2012-12-24 4 views
1

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

+2

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

+0

Можете ли вы попробовать «Дата», я думаю, дата должна иметь «». Вставьте в кавычки – hakiko

+0

Посмотрите [здесь] (http://www.sqlite.org/datatype3.html) на «Дата и время». В принципе, SQLite не имеет типа данных даты, но имеет некоторые предпочтительные форматы. Если у вас есть дата, хранящаяся в другом формате, чем предпочтительные, тогда вы должны выбрать «исходное» значение, а не использовать встроенные функции даты/времени. –

ответ

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. См. date and time datatype in SQLite. Это зависит от того, как ваша дата была сохранена в базе данных.

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

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

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

+0

Спасибо Rob.I есть еще один запрос аддона, пожалуйста, помогите мне. Я использовал этот запрос ** SELECT strftime ('% Y', replace (Date, '/', '-')) из отчета **. Я пытаюсь достичь этого - http://stackoverflow.com/questions/ 14019624/sqlite-query-to-find-sum-of-a-year-by-the-given-dates –

+0

Я не думаю, что вы можете использовать эти функции даты, если поле даты не находится в одном из тех форматов, перечисленных в этом doc Я ссылался в своем ответе. Примечательно, например, он должен быть в формате «ГГГГ-ММ-ДД» (обратите внимание на четырехзначный год).В качестве альтернативы, если ваши даты не соответствуют действующему формату даты, вы можете получить двухзначный год из своего формата «ММ-ДД-ЮГ», используя простой «substr (date, 7, 2)». – Rob

Смежные вопросы