首页 > 解决方案 > 如何在 C++ 中从 SQL 中检索日期字段

问题描述

使用 Microsoft Access,我有一个Date/Time数据类型的字段。我想将它加载到我的 C++ 程序中,但我不知道整数数据类型Date/Time是什么。这是我用来检索它的代码,

const char* qry = "SELECT * FROM TBL";

//Query data
m_ReturnStatus = SQLAllocStmt(m_Connection, &m_QueryStatement);
m_ReturnStatus = SQLPrepare(m_QueryStatement, (SQLCHAR*)qry, SQL_NTS);

/* Excecute the query */
m_ReturnStatus = SQLExecute(Get_Instance().m_QueryStatement);
m_ReturnStatus = SQLFetch(Get_Instance().m_QueryStatement);
while (SQL_SUCCEEDED(Get_Instance().m_ReturnStatus))
{    
    unsigned long date; //or char date[11] 
    m_ReturnStatus = SQLGetData(m_QueryStatement, 1, SQL_C_ULONG, &date, 1, nullptr);
    m_ReturnStatus = SQLFetch(m_QueryStatement); //returns next rowset
    std::cout << date << std::endl;
};
m_ReturnStatus = SQLFreeStmt(m_QueryStatement, SQL_DROP);

在这个例子中,数据库只是

TableDate

12/03/2021
12/03/2021
.
.
.

使用dateasunsigned long时,输出12/03/20211044。使用dateas char [11]with SQLGetData(m_QueryStatement, 1, SQL_C_CHAR, date, 11, nullptr);,输出是意外的。第一个控制台输出是(]ù,然后是源源不断的╨☻,这看起来很奇怪,因为实际的日期值没有改变。

另请注意,在 Access 中,有一个DateValue用于将日期插入表中的函数,返回值为12/03/2021is 44267

标签: c++sqldate

解决方案


推荐阅读