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);
}