2009-07-25 3 views
7

Я пытаюсь вытащить и форматировать временную метку из моего SQLite db. В моем чтении кажется, что форматирование SQLite крайне ограничено по сравнению с преобразованием форматирования даты, доступным для PHP. Я этот запрос приходит из JavaScript:Форматирование даты из SQLite-запроса

SELECT strftime('%m %d, %Y', timestamp) AS saveddate

И возвращается:

03 03, 2009

Я пытаюсь заставить его вернуть:

3 марта, 2009

Любые предложения?

ответ

6

SQLite does not support month names, к сожалению. Вам нужно будет преобразовать его в название месяца либо с помощью таблицы поиска, либо с помощью оператора case, либо с помощью переключателя на уровне презентации.

6

Абсолютно верно, что SQLite ориентирован на функциональность, которая принадлежит слою хранения данных, и НЕ по функциональности, которая принадлежит пользовательскому интерфейсу, например, даты форматирования с названиями месяцев и т. П. Я настоятельно рекомендую вам принять это как очень полезный намек, чтобы сохранить функциональность каждого уровня в своем собственном слое! -).

Если вы абсолютно заинтересованы в неправильном использовании пользовательского интерфейса на уровне хранения данных, это может в какой-то степени быть обучено в виде, например, написав свои собственные функции форматирования на C и подключив их в SQLite или проделав невероятно неуклюжие кривые SQL, но я не могу представить ЛЮБОЙ вариант использования, где это стоило бы того.

+3

Что делать, если мой уровень представления является текстовым файлом из результата SQL-запроса? Это очень простая потребность, и печальный SQLLite не поддерживает ее из коробки. Однако, учитывая его цель и то, насколько я могу, я могу принять эту пропущенную функцию, она просто воняет. – Kuberchaun

3

Краткое название месяца

substr ("--JanFebMarAprMayJunJulAugSepOctNovDec", strftime ("%m", thedate) * 3, 3) 

Полное название месяца

rtrim (substr ("January--February-March----April----May------June-----July-----August---SeptemberOctober--November-December", strftime ("%m", thedate) * 9 - 8, 9)) 

The черточек используются только, чтобы понять, на этой странице. Замените их пробелами.

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