访问rundate附近的最新数据

时间:2012-12-29 20:01:31

标签: c++ sql visual-c++ mfc

我正在通过sql查询从access db中检索记录。原始查询检索最新的日期数据。但是,如果我想运行该工具,例如2012年3月3日,它仍然采用最新的数据。但我需要的数据等于2012年3月3日或接近2012年3月3日但不超过日期的日期。例如,如果3/3/2012不可用且数据库中的3/2/2012可用,它应该选择该日期。修改后的查询如下所示。它给出了保留字拼写错误或错位的错误..等等。你能帮我查询一下吗?在查询中,trundate是从我的程序输入的。我的查询现在是:

CString sel =“SELECT I.ProductType,I.Spread,I.DateUpdated FROM MortgageRateSpreads I,(选择ProductType,MAX(DateUpdated)AS DateUpdated1”;         sel + =“其中DateUpdated< =”;
        sel + = tRunDate.Format(“{ts'%Y-%m-%d'}”);

CRecordset set(& pdatabase);

    try
    {

        double  val;
        CDBVariant var;

        if (set.Open(CRecordset::forwardOnly, sel/*, CRecordset::readOnly*/)) 
        {
            m_Log->Log("recordset is open");
            while (!set.IsEOF())

我的选择是:

sel "SELECT I.ProductType, I.Spd, I.DateUpdated FROM MRSpds I,(select ProductType, MAX(DateUpdated) AS DateUpdated1where DateUpdated <={ts '2012-02-08'  } FROM MRSpds GROUP BY ProductType) T WHERE I.ProductType = T.ProductType AND I.DateUpdated =T.DateUpdated1"

谢谢

            {               

1 个答案:

答案 0 :(得分:0)

我认为ms访问喜欢日期周围的#符号。 DateUpdated&LT =#2012年3月3日# 在sel + =“where ...”中你需要一个空格,比如sel + =“where ......” SQL语句中的日期字符串应如下所示 DateUpdated&lt; =#3/3/2012#

此外,嵌套的select语句似乎在where子句后面有from子句。我认为它应该像

  

(选择ProductType,MAX(DateUpdated)AS DateUpdated1 FROM MRSpds,其中DateUpdated&lt; =#2012-02-08#GROUP BY ProductType)T