Форум программистов, компьютерный форум CyberForum.ru

Организация БД по дате - C++

Восстановить пароль Регистрация
 
GraBLYA
-46 / 1 / 0
Регистрация: 28.02.2013
Сообщений: 62
17.01.2014, 14:52     Организация БД по дате #1
Тема далеко не новая и некоторые наводки на решения я находил уже на форуме, но лишь наводки.
Суть такая:
При вводе данных в БД в графе "Дата внесения: " нужно записать дату (не важно чего именно), в формате YYYY.MM.DD . Я сначала хотел использовать алгорит зашивфорвки в int число даты, но при надобности поиска по дате или поиска в интервале, то привычные циклы for и while придется уродовать огромнейшим кол-вом условий что бы с даты 2013.01.01 (int 20130101) пройти до 2014.01.01 (int 20140101 ) нужно было не 10000 шагов, а всего 365.

Прошу пару советов зеленому: как организовать работу с датами, что бы потом можно после записи в файл достать её, проводить поиск в интервале и т.д?

Простенький алгоритм зашифровки и расшифровки ввода YYYY.MM.DD в int число YYYYMMDD и расшифровка на 3 отдельных:YYYY MM DD, может кому пригодится.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <iomanip>
using namespace ::std;
int main ()
{   
    int year;
    int month;
    int day;
    int date=0;
    bool ch_date = false;
    do{
    cout<<"Enter date: ";
    cin>>setw(4)>>year; //ãîä
    cin.ignore();    //òî÷êГ*
    cin>>setw(2)>>month; //ìåñÿö
    cin.ignore();    //òî÷êГ*
    cin>>setw(2)>>day; //Г¤Г*ГІГ*
    if (year> 0 && month> 0 && month<= 12 && day > 0 && day <= 31)
    {
    cout<<"\n\n"<<year<<'\t'<<month<<'\t'<<day;
    ch_date = true;
    date+=day;
    date+=month*100;
    date+=year*10000;
    cout<<'\n'<<date<<'\n'; 
    year = date/10000;
    cout<<year<<' ';
    month = (date - year*10000)/100; 
    cout<<month<<' ';
    day = date - (year*10000 + month*100);
    cout<<day<<' ';
    }
    else 
    {
    cout<<"\nError #2 Probably, you did a mistake in date. Try again!\n";
    ch_date = false;
    }
    }
    while (ch_date != true);
    cout<<'\n';
    return (0);
}
Заранее премного благодарен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
17.01.2014, 17:03     Организация БД по дате #2
Прошу пару советов зеленому: как организовать работу с датами
C++
1
2
3
4
5
6
struct Date
{
    int year;
    int month;
    int day;
}
для хранения
C++
1
std::vector< Date > vecDate;
чтение/запись
Читайте и пишите всю структуру целиком
C++
1
2
for(size_t i = 0; i < vecDate.size(); ++i)
           out.write((char*)vecDate[i], sizeof(vecDate) / vecDate.size());
поиск
C++
1
2
3
4
5
6
Date findDate; // с какими то значениями
for(size_t i = 0; i < vecDate.size(); ++i)
{
  if(vecDate[i].year == d.year && vecDate[i].month == d.month && vecDate[i].day == d.day)
}
или воспользуйтесь алгоритмом std::find или подобными
GraBLYA
-46 / 1 / 0
Регистрация: 28.02.2013
Сообщений: 62
17.01.2014, 19:25  [ТС]     Организация БД по дате #3
Цитата Сообщение от egor2116 Посмотреть сообщение
size_t
Что за тип?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
17.01.2014, 19:34     Организация БД по дате #4
Что за тип?
без знаковый целочисленный
GraBLYA
-46 / 1 / 0
Регистрация: 28.02.2013
Сообщений: 62
18.01.2014, 02:14  [ТС]     Организация БД по дате #5
Цитата Сообщение от egor2116 Посмотреть сообщение
без знаковый целочисленный
А чем он отличается от 'unsigned'?
gunslinger
случайный прохожий
 Аватар для gunslinger
1098 / 716 / 184
Регистрация: 20.07.2013
Сообщений: 1,973
18.01.2014, 03:19     Организация БД по дате #6
Ничем (то же самое): к примеру, "in Borland’s implementation of the ANSI C standard, the type size_t is unsigned".
When the base type is omitted from a declaration, int is assumed.
Если базовый тип переменной после unsigned пропущен, то автоматически добавляется (подразумевается) int.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2014, 17:23     Организация БД по дате
Еще ссылки по теме:

C++ Не работает сортировка по дате
Добавление дней к заданной дате C++
C++ Номер недели по дате

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
GraBLYA
-46 / 1 / 0
Регистрация: 28.02.2013
Сообщений: 62
18.01.2014, 17:23  [ТС]     Организация БД по дате #7
Цитата Сообщение от gunslinger Посмотреть сообщение
Ничем (то же самое): к примеру, "in Borland’s implementation of the ANSI C standard, the type size_t is unsigned".

Если базовый тип переменной после unsigned пропущен, то автоматически добавляется (подразумевается) int.
Спасибо за развернутый ответ.
Yandex
Объявления
18.01.2014, 17:23     Организация БД по дате
Ответ Создать тему
Опции темы

Текущее время: 13:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru