LINUX.ORG.RU

QPSQL не выбирает значения timestamp with time zone.

 , ,


0

2

Добрый день.

Пишу приложение на Qt, работающее с бд на postgresql, всё работает нормально, за исключением одного «но». При выполнение select не выбираются данные из полей timestamp, record содержит пустые QDateTime.

Подскажите, в чём может быть проблема.

postgresql 9.1 qt 4.8.2

★★

Что-то нереальное. Там значения-то точно присутствуют? Что выдаёт, если делать не toDateTime(), а toString()?

unC0Rr ★★★★★
()

Решению вашей проблемы очень помогли бы SQL-команда для создания таблицы и код, который timestamp пытается выдернуть.

trex6 ★★★★★
()
Ответ на: комментарий от unC0Rr

Пустая строка.

Сам в шоке и воспринимаю это как нереальное.

Y ★★
() автор топика
Ответ на: комментарий от trex6

Создание:

create table oinfo (
    id serial primary key,
    deleted boolean default false not null,
    time_of_last_change timestamp with time zone not null,
    time_created timestamp with time zone not null,
    operator_id integer,
    comment character varying (255)
) with (
    oids=false
);
insert into oinfo (id, time_created, operator_id) values
    (0, '2012-07-08 13:44:15', 3),
    (1, '2012-07-08 13:44:15', 3),
    (2, '2012-07-08 13:44:15', 3),
    (3, '2012-07-08 13:44:15', 3),
    (4, '2012-07-08 13:44:15', 3),
    (5, '2012-07-08 13:44:15', 3),
    (6, '2012-07-08 13:44:15', 3),
    (7, '2012-07-08 13:44:15', 3),
    (8, '2012-07-08 13:44:15', 3),
    (9, '2012-07-08 13:44:15', 3),
    (10, '2012-07-08 13:44:15', 3),
    (11, '2012-07-08 13:44:15', 3);

select * from oinfo из командной строки возвращает записи с заданными time_created и time_of_last_change (создаётся триггером).

Также данные возвращаются, если использую libpqxx.

Код c QSqlDatabase:

    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
    db.setHostName("localhost");
    db.setDatabaseName("test");
    db.setUserName("postgres");
    db.setPassword("12345");
    db.open();
    qDebug() << db.tables();
    QSqlQuery *query = new QSqlQuery(db);
    query->exec("select * from oinfo");
    qDebug() << query->record();
    query->finish();

В консоли вижу:

 "0:" QSqlField("id", int, length: 4, generated: yes, typeID: 23) "0" 
 "1:" QSqlField("deleted", bool, length: 1, generated: yes, typeID: 16) "false" 
 "2:" QSqlField("time_of_last_change", QDateTime, length: 8, generated: yes, typeID: 1184) "" 
 "3:" QSqlField("time_created", QDateTime, length: 8, generated: yes, typeID: 1184) "" 
 "4:" QSqlField("operator_id", int, length: 4, generated: yes, typeID: 23) "3" 
 "5:" QSqlField("comment", QString, length: 255, generated: yes, typeID: 1043) "" 

Y ★★
() автор топика
Ответ на: комментарий от unC0Rr

Всё работает. Спасибо.

Y ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.