0

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

CString sel = "SELECT I.ProductType, I.Spread, I.DateUpdated FROM MortgageRateSpreads I,(select ProductType, MAX(DateUpdated) AS DateUpdated1"; sel += "where 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"

谢谢你

            {               
4

1 回答 1

0

我认为 ms access 喜欢日期周围的 # 符号。DateUpdated<=#3-3-2012# 在 sel += "where..." 你需要一个空格,例如 sel += " where ..." SQL 语句中的日期字符串应该看起来像 DateUpdated <= #3/3/2012#

此外,您的嵌套 select 语句似乎在 where 子句之后有 from 子句。我认为应该是这样的

(选择 ProductType, MAX(DateUpdated) AS DateUpdated1 FROM MRSpds where DateUpdated <= #2012-02-08# GROUP BY ProductType) T

于 2012-12-30T00:39:43.347 回答