2010-06-10 6 views
0

Есть ли способ конвертировать дату в строку в Sqlite? Например, я пытаюсь получить дату мин в Sqlite:Преобразование даты в строку в Sqlite

SELECT MIN(StartDate) AS MinDate FROM TableName 

Я знаю, что в SQL Server Я хотел бы использовать SQL ниже, чтобы сделать то, что я пытаюсь сделать:

SELECT CONVERT(VARCHAR(10), MIN(StartDate), 101) AS MinDate FROM TableName 

Спасибо!

+0

Как вы храните даты в вашем столе? – dan04

ответ

1

Попробуйте это:

SELECT MIN(DATE('your-date-here')) as MinDate FROM TableName 

И убедитесь, что ваш-финиковая здесь следует хорошо понят формат с помощью SQLite (см Time String раздел в документации.)

+0

Результат для этого - NULL, когда я запускаю его. Кроме того, «your-date-here» - столбец DATETIME из моей таблицы. Я не уверен, что это имеет значение? – Billy

+0

Если он возвращает NULL, это потому, что ваш аргумент недействителен. Предположительно, вы встречаетесь как строки. Если да, убедитесь, что вы используете формат «YYYY-MM-DD». – dan04

+0

SQLite хранит даты как строки ... как говорит Дэн, вы, вероятно, не используете правильно отформатированную дату ... –

3

SQLite не имеет дату тип. То, что CURRENT_TIMESTAMP фактически возвращает, представляет собой строку в формате YYYY-MM-DD HH:MM:SS. date/time formatting/calculation functions принимают строки в этом формате или, альтернативно, цифры, которые интерпретируются как Julian dates, если вы не используете модификатор 'unixepoch'.

Таким образом, «преобразования даты в строку» зависит от того, как вы храните ваши даты:

  • Если вы храните их в качестве даты Julian, используйте DATE(YourDateColumn).
  • Если вы храните их как Unix, используйте DATE(YourDateColumn, 'unixepoch').
  • Если вы храните их как строки ISO 8601, тогда вам не нужно ничего делать. Если вам не нужна строка в другом формате, в этом случае вы должны использовать функцию STRFTIME.
  • Если вы храните их как какой-либо другой строковый формат, вам действительно стоит рассмотреть возможность использования одного из поддерживаемых форматов, чтобы вы могли использовать функции даты и времени.

Во всех трех форматах даты хронологический порядок совпадает с лексикографическим порядком, поэтому функция MIN работает должным образом.

+0

Может подтвердить, что 'DATE (ZYOUR_COLUMN_NAME, 'unixepoch')' работает для генерируемых SQLite файлов CoreData. – Erik

1

попробуйте это !!

SELECT * FROM Table WHERE strftime('%Y-%m-%d',CreatedAt) BETWEEN '2014-10-07' AND '2014-10-17'