crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> SQLite функция обратная strftime()
Litkevich Yuriy
  опции профиля:
сообщение 13.2.2013, 12:48
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Есть ли в SQLite фнкция которая позволяет получить "SQLite дату" из произвольной строки (из значения поля)?

strftime() позволяет получить из "SQLite даты" произвольно форматированную строку, например:
strftime("%Y.%m.%d", 'now')
даст 2013.02.13

а у меня ситуация наоборот, есть в поле ("Date") некой таблицы строка 2013.02.13 и мне её нужно преобразовать к "SQLite дате", т.е. к 2013-02-13.

Если я делаю просто:
cast("Date" as Date)
то получаю ерунду (2013,02)

Поиск по интернету пока не даёт результата.

Реализация должна быть только средствами SQL (применительно к SQLite)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 15.2.2013, 8:01
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


SELECT datetime("2012-08-03 00:00:00");


работает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 15.2.2013, 8:24
Сообщение #3


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(Litkevich Yuriy @ 13.2.2013, 15:48) *
есть в поле ("Date") некой таблицы строка 2013.02.13 и мне её нужно преобразовать к "SQLite дате", т.е. к 2013-02-13.

дык, это не преобразования дат, это обычные строковые функции. всякие там substr и иже с ним. смотри полный список функций у них на сайте: http://www.sqlite.org/lang_corefunc.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.2.2013, 14:49
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


как оказалось, собака была зарыта тут:
Цитата(Litkevich Yuriy @ 13.2.2013, 14:48) *
cast("Date" as Date)
Хотя вообще поведения Лайта стремнее некуда.
Дело в том что в нём нет типа Date, но он, собака страшная, хоть бы ругнулся на это приведение. Ан нет, чёт своё выплюнул молчком.
Сейчас так делаю:
Сначала точки на чёрточки меняю:
replace(b."date", ".", "-")

ну а потом сравниваю так:
(date("Date") >= date('now', '-7 day'))

если функцию date() не использовать, то ересь получается, т.к. сравнивает просто строковые величины
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 15.2.2013, 17:02
Сообщение #5


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


не знаю, чем тебе лайт не нравится. у меня он заюзан для отладки наших девайсов. пишет со страшной скоростью, проблем не ощущается. но я пишу время в формате unix timestamp. единственное, что я в нём заметила, это то, что он начинает подглючивать, если очень быстро писать туда и база дорастает до размера больше 500 мегабайт. но я тогда просто открываю ещё одну базу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.11.2024, 15:49