Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2017, 18:58   #1
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию Преобразование даты из поля DATE на C++

Храню в базе SQLite дату в поле типа DATE. В приложении мне нужно работать с этой датой. Как мне преобразовать извлеченное значение даты и в какой формат? Стоит ли преобразовывать ее в std::time_t, если в задаче мне надо работать с годами?
Aoizora вне форума Ответить с цитированием
Старый 20.06.2017, 19:55   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

В SQLite нет типа DATE.
Ref:
http://www.sqlite.org/datatype3.html
waleri вне форума Ответить с цитированием
Старый 20.06.2017, 20:09   #3
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
В SQLite нет типа DATE.
Ref:
http://www.sqlite.org/datatype3.html
Есть же:

NUMERIC
DECIMAL(10,5)
BOOLEAN
DATE
DATETIME

Дата в формате '2017-06-14'.

Последний раз редактировалось Aoizora; 20.06.2017 в 20:12.
Aoizora вне форума Ответить с цитированием
Старый 21.06.2017, 22:51   #4
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию

До сих пор не решил проблему. Может, хранить дату в другом формате? Какой формат наиболее удобен для работы с датой на C++?
Aoizora вне форума Ответить с цитированием
Старый 22.06.2017, 01:14   #5
Alexander Gamza
Пользователь
 
Регистрация: 14.06.2017
Сообщений: 31
По умолчанию

Лучше не заморачиваться и хранить дату в поле типа varchar, а если нужно извлечь дату в удобоваримом формате
Код:
AnsiString TfMap::fTrimDate(AnsiString s)
{

   AnsiString dd[3];

	if(s.Pos("-")){

	  dd[0]=s.SubString(1, s.Pos("-")-1);
	  s.Delete(1, s.Pos("-"));
	  dd[1]=s.SubString(1, s.Pos("-")-1);
	  s.Delete(1, s.Pos("-"));
	  dd[2]=s;

	  s="";

	  s=dd[2]+"."+dd[1]+"."+dd[0];

	}


   return s;

}
Alexander Gamza вне форума Ответить с цитированием
Старый 22.06.2017, 16:22   #6
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию

Цитата:
Сообщение от Alexander Gamza Посмотреть сообщение
Лучше не заморачиваться и хранить дату в поле типа varchar, а если нужно извлечь дату в удобоваримом формате
Код:
AnsiString TfMap::fTrimDate(AnsiString s)
{

   AnsiString dd[3];

	if(s.Pos("-")){

	  dd[0]=s.SubString(1, s.Pos("-")-1);
	  s.Delete(1, s.Pos("-"));
	  dd[1]=s.SubString(1, s.Pos("-")-1);
	  s.Delete(1, s.Pos("-"));
	  dd[2]=s;

	  s="";

	  s=dd[2]+"."+dd[1]+"."+dd[0];

	}


   return s;

}
Грязно как-то.
Aoizora вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual Basic, преобразование из doube в date Lord-of-Hedgehogs Помощь студентам 1 18.01.2011 13:01
Запись даты в Paradox - поля date time xKLONx БД в Delphi 6 17.08.2010 17:40
Преобразование даты alco84 Microsoft Office Access 2 17.03.2010 17:45
Преобразование даты Яр|/||< (^_^) Общие вопросы Delphi 7 18.02.2010 14:45
MySQl+PHP5 формат поля DATE Geddar SQL, базы данных 1 03.05.2009 16:54