2

我试图让以下最后两个查询工作,但我只能让第一个工作。

 querystream << "select Date, C"<<m_ID<<" from Data" <<nTable <<";";

 querystream << "select Date, C"<<m_ID<<" from Data" <<nTable <<" where Date >= #DateAdd (\"yyyy\", -1, Now())#  ORDER by DATE ASC;";
 querystream << "select Date, C"<<m_ID<<" from Data" <<nTable <<" where Date >= #DateAdd (\"yyyy\", -1, #10/09/2012 09:12#)#  ORDER by DATE ASC;";

如果你们有任何想法,我将非常感激,谢谢,詹姆斯

4

2 回答 2

0

DateAdd()返回一个日期/时间值,数据库引擎可以按原样使用它的返回值......所以你不需要包含#分隔符。

Date是保留字。如果您将其用作表中字段的名称,请将其括在方括号中以避免混淆数据库引擎。

" where [Date] >= DateAdd(\"yyyy\", -1, #10/09/2012 09:12#) ORDER by [DATE] ASC;"

db 引擎将接受带有间隔参数 (yyyy) 的单引号而不是双引号DateAdd()。我不知道这是否会使 c++ 中的任何内容复杂化,但我会这样尝试:

" where [Date] >= DateAdd('yyyy', -1, #10/09/2012 09:12#) ORDER by [DATE] ASC;"

如果您有可用的 Access,我认为您最好使用 Access 查询设计器创建和测试您的查询,然后在 c++ 中使用经过验证的 SQL。

于 2012-10-10T11:26:31.350 回答
0

这将起作用:

querystream << "select Date, C"<<m_ID<<" from Data" <<nTable <<" where Date >= DateAdd (\"yyyy\", -1, Now())  ORDER by DATE ASC;";
querystream << "select Date, C"<<m_ID<<" from Data" <<nTable <<" where Date >= DateAdd (\"yyyy\", -1, #10/09/2012 09:12#)  ORDER by DATE ASC;";

(基本上,在 DateAdd 函数之前和之后去掉#)

此外,最好对第二个查询使用#YYYY-MM-DD HH:MM# 格式(它将是#2012-09-10 09:12# 或#2012-10-09 09:12#在您的示例中,取决于您的本地化设置

于 2012-10-10T11:31:03.853 回答