sqlite odbc得到小时分钟。秒

时间:2010-10-20 17:45:43

标签: sqlite odbc timestamp

我正在使用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.这对我使用访问数据库很有用。还有其他人有这个问题吗?我本可以发誓一周前这对我有用。

2 个答案:

答案 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.*"'...