«Наилучшее» почти полностью зависит от того, откуда берутся даты (объекты NSDate, некоторый XML-канал) и как ими манипулируют (просто сохраняют как есть, а не делают какую-то арифметику, например, «дни до»).
Я не обязательно рекомендую это, но я написал приложение, которое также должно было хранить дату, но не время в БД SQLite. Сначала я использовал два столбца, «Месяц» и «День», где «Месяц» был определен как количество месяцев с января 2000 года. Мне нужно было применять одну строку на дату, поэтому я определил индекс UNIQUE для этих двух столбцов, и он оказался чтобы делать обновления ужасно медленно.
Для второй попытки я использовал аналогичную схему, но закодировал дату в одно число, используя нижние 5 битов для Дня и оставшиеся верхние биты для Месяца (опять же, с января 2000 года). Функции преобразования были:
Date = (Month << 5) | Day
Month = Date >> 5
Day = 0x1F & Date
Эта схема сохраняет числовой порядок дат и позволяет легко разбить их на составляющие. Это имело смысл для моего приложения, потому что я хранил данные по месяцам. Если с учетом Даты вы хотите найти следующую Дату, эта схема может быть не самой лучшей, поскольку Дата + 1 может быть недопустимой.