Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqlite odbc获取小时分钟秒_Sqlite_Odbc_Timestamp - Fatal编程技术网

sqlite odbc获取小时分钟秒

sqlite odbc获取小时分钟秒,sqlite,odbc,timestamp,Sqlite,Odbc,Timestamp,我正在使用,由于某些原因,它无法获得小时、分钟和秒。我使用以下命令绑定列: SQLBindCol(hTimeStampNotes, 5, SQL_C_TIMESTAMP, &(noteTimeStamp.submitTime), 16, &junkLong); noteTimeStamp.submitTime是一种时间戳数据类型: typedef struct tagTimeStampType {//TIMESTAMP_STRUCT short year; s

我正在使用,由于某些原因,它无法获得小时、分钟和秒。我使用以下命令绑定列:

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

好吧,我不明白为什么会发生这种情况,这就是我如何解决的:

首先,我在类型的末尾添加了一个数组

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一起工作。

几年过去了,但没有任何变化:

对于那些想知道实际原因的人:

…来自sqlite3odbc.c

     if (p->coldef && p->coldef <= 16) {
         sprintf(p->strbuf, "%04d-%02d-%02d %02d:%02d:00.000",
                 ((TIMESTAMP_STRUCT *) p->param)->year,
                 ((TIMESTAMP_STRUCT *) p->param)->month,
                 ((TIMESTAMP_STRUCT *) p->param)->day,
                 ((TIMESTAMP_STRUCT *) p->param)->hour,
                 ((TIMESTAMP_STRUCT *) p->param)->minute);
     } else if (p->coldef && p->coldef <= 19) {
         sprintf(p->strbuf, "%04d-%02d-%02d %02d:%02d:%02d.000",
                 ((TIMESTAMP_STRUCT *) p->param)->year,
                 ((TIMESTAMP_STRUCT *) p->param)->month,
                 ((TIMESTAMP_STRUCT *) p->param)->day,
                 ((TIMESTAMP_STRUCT *) p->param)->hour,
                 ((TIMESTAMP_STRUCT *) p->param)->minute,
                 ((TIMESTAMP_STRUCT *) p->param)->second);
     } else {
         sprintf(p->strbuf, "%04d-%02d-%02d %02d:%02d:%02d.%03d",
                 ((TIMESTAMP_STRUCT *) p->param)->year,
                 ((TIMESTAMP_STRUCT *) p->param)->month,
                 ((TIMESTAMP_STRUCT *) p->param)->day,
                 ((TIMESTAMP_STRUCT *) p->param)->hour,
                 ((TIMESTAMP_STRUCT *) p->param)->minute,
                 ((TIMESTAMP_STRUCT *) p->param)->second,
                 len);
     }