Guten Tag!
Ich bin Anfänger und möchte euch um Hilfe bitten. Ich versuche ein Datum aus sqlda_t Struktur mit C auslesen. Es kommt falsches Datum 2000-01-10, obwohl in Abfrage 2021-10-02 festgelegt ist.
Könntet ihr eine Tipp geben, woran das Problem liegt?
EXEC SQL BEGIN DECLARE SECTION;
char query[1024] = "select '2021-10-02'::date";
char colname[1024];
EXEC SQL END DECLARE SECTION;
// Connect to DB
EXEC SQL CONNECT TO test_db;
EXEC SQL PREPARE stmt FROM :query;
EXEC SQL DECLARE cur CURSOR FOR stmt;
EXEC SQL OPEN cur;
EXEC SQL FETCH NEXT FROM cur INTO DESCRIPTOR sqlda_d;
int i;
for (i=0 ; i < sqlda_d->sqld ; i++)
{
sqlvar_t v = sqlda_d->sqlvar;
strncpy( colname, v.sqlname.data, v.sqlname.length );
colname[v.sqlname.length] = '\0';
printf("\n");
printf("Type='%d'\n", v.sqltype );
printf("NLength='%d'\n", v.sqlname.length );
printf("Name='%s'\n", colname );
switch( v.sqltype )
{
case ECPGt_date:
printf("length von v.sqldate : %u Bytes\n", v.sqllen);
printf("DATE von SQLDA: PGTYPESdate_to_asc '%s'\n", PGTYPESdate_to_asc( *(char*)(v.sqldata)));
break;
}
printf("\n");
}
EXEC SQL CLOSE cur;
EXEC SQL COMMIT;
EXEC SQL DISCONNECT ALL;
Ich bin Anfänger und möchte euch um Hilfe bitten. Ich versuche ein Datum aus sqlda_t Struktur mit C auslesen. Es kommt falsches Datum 2000-01-10, obwohl in Abfrage 2021-10-02 festgelegt ist.
Könntet ihr eine Tipp geben, woran das Problem liegt?
EXEC SQL BEGIN DECLARE SECTION;
char query[1024] = "select '2021-10-02'::date";
char colname[1024];
EXEC SQL END DECLARE SECTION;
// Connect to DB
EXEC SQL CONNECT TO test_db;
EXEC SQL PREPARE stmt FROM :query;
EXEC SQL DECLARE cur CURSOR FOR stmt;
EXEC SQL OPEN cur;
EXEC SQL FETCH NEXT FROM cur INTO DESCRIPTOR sqlda_d;
int i;
for (i=0 ; i < sqlda_d->sqld ; i++)
{
sqlvar_t v = sqlda_d->sqlvar;
strncpy( colname, v.sqlname.data, v.sqlname.length );
colname[v.sqlname.length] = '\0';
printf("\n");
printf("Type='%d'\n", v.sqltype );
printf("NLength='%d'\n", v.sqlname.length );
printf("Name='%s'\n", colname );
switch( v.sqltype )
{
case ECPGt_date:
printf("length von v.sqldate : %u Bytes\n", v.sqllen);
printf("DATE von SQLDA: PGTYPESdate_to_asc '%s'\n", PGTYPESdate_to_asc( *(char*)(v.sqldata)));
break;
}
printf("\n");
}
EXEC SQL CLOSE cur;
EXEC SQL COMMIT;
EXEC SQL DISCONNECT ALL;