我试图让以下最后两个查询起作用,但我只能让第一个查询工作。
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;";
如果你们有任何想法,我将非常感激, 谢谢, 詹姆斯
答案 0 :(得分:0)
DateAdd()
返回日期/时间值,db引擎可以按原样使用其返回值...因此您不需要包含#
分隔符。
Date
是保留字。如果您将它用作表中字段的名称,请将其括在方括号中以避免混淆数据库引擎。
" where [Date] >= DateAdd(\"yyyy\", -1, #10/09/2012 09:12#) ORDER by [DATE] ASC;"
db引擎将使用DateAdd()
的interval参数(yyyy)接受单引号而不是双引号。我不知道这是否会使c ++中的任何内容复杂化,但我会这样尝试:
" where [Date] >= DateAdd('yyyy', -1, #10/09/2012 09:12#) ORDER by [DATE] ASC;"
如果您有Access可用,我认为您最好使用Access查询设计器创建和测试您的查询,然后在c ++中使用经过验证的SQL。
答案 1 :(得分: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#,具体取决于您的本地化设置