Имя: Пароль:
1C
1C 7.7
v7: 1sqlite - хранение даты
0 ildary
 
16.05.14
16:59
Уважаемые специалисты, подскажите пожалуйста, как при создании внешней таблицы с помошью 1sqlite - выгружать туда поле даты так, чтобы можно было потом в запросе накладывать фильтр типа "WHERE Таб.Date BETWEEN :ДатаНач AND :ДатаКон"?
1 Ёпрст
 
гуру
16.05.14
17:02
"YYYY-MM-DD HH:MM:SS.SSS"
2 Ёпрст
 
гуру
16.05.14
17:02
да и .. как угодно
3 ildary
 
16.05.14
17:04
(1) то есть унутре базы все будет в строковом виде, как в (1), но при этом ДатаНач с 1с-ным типом Дата - позволит это отфильтровать?
4 ildary
 
16.05.14
17:06
+(3) и еще - как правильнее обьявлять такую колонку  - CHARACTER(23)?
5 Ёпрст
 
гуру
16.05.14
17:25
лучше как CURRENT_DATE
6 ildary
 
16.05.14
17:26
(5) огромное спасибо!!!
7 Эмбеддер
 
16.05.14
17:28
(5) это тип что ли такой? может, функция так называется?
8 Ёпрст
 
гуру
16.05.14
17:35
(7) да не, это значения по-умолчанию..
а так, тип date
9 Ёпрст
 
гуру
16.05.14
17:35
че-то о своём всё.. думаю.
10 Ёпрст
 
гуру
16.05.14
17:37
или TEXT  ? не помню ужо, надо на http://www.sqlite.org топать смотреть, че он там поддерживает.
11 Ёпрст
 
гуру
16.05.14
17:57
вот так можешь хранить, тупо строкой
//*******************************************
Процедура Сформировать()
    ЗагрузитьВнешнююКомпоненту("1sqlite.dll");
    база = СоздатьОбъект("SQLiteBase");
    Если ФС.СуществуетФайл(КаталогИБ()+"ExtForms\")=0 Тогда
        ФС.СоздатьКаталог(КаталогИБ()+"ExtForms\");
    КонецЕсли;
    Если ФС.СуществуетФайл(КаталогИБ()+"ExtForms\DB_SQLite\")=0 Тогда
        ФС.СоздатьКаталог(КаталогИБ()+"ExtForms\DB_SQLite\");
    КонецЕсли;
    ИмяБД = КаталогИБ()+"ExtForms\DB_SQLite\bazaE.db3";
    глМД = СоздатьОбъект("MetaDataWork");
    база.Открыть(ИмяБД);
    запросSQLLite = база.НовыйЗапрос();
    //запросSQLLite.ВыполнитьЗапрос("PRAGMA journal_mode=WAL"); //это прописать, ежели база в терминале
    запросSQLLite.ВыполнитьЗапрос("PRAGMA journal_mode=OFF");
    ТекстЗапроса ="
    |Create  table if not EXISTS
    |Базёнка (
    |   ДатаДок varchar(8)
    |)";
     запросSQLLite.ВыполнитьЗапрос(ТекстЗапроса);
    
    ТекстЗапроса = "
        |    INSERT INTO Базёнка
        |    VALUES ('20041102')
        |";
    запросSQLLite.ВыполнитьЗапрос(ТекстЗапроса);
    ТекстЗапроса = "
    |Select *,ДатаДок [Дата :Дата] from Базёнка";
    ТЗ = запросSQLLite.ВыполнитьЗапрос(ТекстЗапроса);
    ТЗ.ВыбрАтьСтроку();
    запросSQLLite.ВыполнитьЗапрос("drop table Базёнка");
КонецПроцедуры
12 orefkov
 
16.05.14
18:57
(0)
YYYYMMDD