我正在使用sqliteodbc,由于某种原因,它无法获得小时,分钟和秒。我使用以下方法绑定列:
SQLBindCol(hTimeStampNotes, 5, SQL_C_TIMESTAMP, &(noteTimeStamp.submitTime), 16, &junkLong);
noteTimeStamp.submitTime是时间戳数据类型:
typedef struct tagTimeStampType {//TIMESTAMP_STRUCT
short year;
short month;
short day;
short hour;
short minute;
short second;
unsigned int fraction;
} TimeStampType;//TIMESTAMP_STRUCT;
我的小时,分钟,秒和分数总是为0.这对我使用访问数据库很有用。还有其他人有这个问题吗?我本可以发誓一周前这对我有用。
答案 0 :(得分:0)
好的我无法弄清楚为什么会发生这种情况我是如何解决这个问题的:
首先我在类型
的末尾添加了一个数组typedef struct tagTimeStampType//TIMESTAMP_STRUCT
{
short year;
short month;
short day;
short hour;
short minute;
short second;
unsigned int fraction;
char timeStampStr[20];
} TimeStampType;//TIMESTAMP_STRUCT;
然后添加#ifdef
#ifdef SQLITE
SQLBindCol(hTimeStampNotes, 5, SQL_C_CHAR, noteTimeStamp.submitTime.timeStampStr, 20, &junkLong);
#else
SQLBindCol(hTimeStampNotes, 5, SQL_C_TIMESTAMP, &(noteTimeStamp.submitTime), 16, &junkLong);
并用一点功能自己调整弦乐
void TimeStampPrep(TimeStampType *timeStamp)
{
#ifdef SQLITE
timeStamp->year = atoi(timeStamp->timeStampStr);
timeStamp->month = atoi(&(timeStamp->timeStampStr[5]));
timeStamp->day = atoi(&(timeStamp->timeStampStr[8]));
timeStamp->hour = atoi(&(timeStamp->timeStampStr[11]));
timeStamp->minute = atoi(&(timeStamp->timeStampStr[14]));
timeStamp->second = atoi(&(timeStamp->timeStampStr[17]));
return;
#else
return;
#endif
}
我仍在试图找出为什么我的原始代码无法与sqlite一起使用。
答案 1 :(得分:0)
几年过去了,但没有任何改变:)
对于那些想知道实际原因的人:
...来自sqlite3odbc.c
...Select-String -Pattern 'OSType="Windows.*"'...