尝试在优势查询中进行时间比较。无法在Advantage文档中找到答案。好像它应该很简单。
表定义是:
CREATE TABLE TBL (
ID AutoInc,
Date Date,
[T] Time
)
基于this book on google books我认为我应该能够对这样表达的文字进行比较:
SELECT * FROM TBL WHERE [T] > '9:00:00 AM'
但是抛出
Error 7200: AQE Error: State = S0000; NativeError = 2124; [iAnywhere Solutions][Advantage SQL Engine]Invalid operand for operator: > [Invalid TIME] -- Location of error in the SQL statement is: 27
答案 0 :(得分:1)
你应该总是使用TIME'HH:MM:SS'(24h)或TIME'HH:MM:SS am'(12h)文字格式:
SELECT * FROM TBL WHERE [T] > TIME'09:00:00 am'
我认为你得到2124错误,因为你使用大写的上午/下午表示法,或者因为你没有使用前导零。
另见:
http://devzone.advantagedatabase.com/dz/webhelp/advantage11/master_sql_literals.htm
答案 1 :(得分:1)
来自SQL Literals下的文档(在ADS帮助文件中, Advantage开发人员指南,第II部分 - Advantage SQL,第11章 - Advantage SQL简介,SQL文字)
时间文字用单引号括起来,并使用以下四种格式之一:HH:MM,HH:MM AM(或PM),HH:MM:SS或HH:MM:SS AM(或PM) )。如果文字中缺少AM(或PM),则假定为24小时。时间文字的AM / PM部分不区分大小写。以下是有效的时间文字:
'19:10'
'4:43 AM' '9:00:45' '22:19:59'
使用此表定义和数据:
create table #temp (ID AutoInc,
Dt Date,
Tm Time);
insert into #temp (Dt, Tm) values (CurDate() - 1, CurTime());
-- Wait to make sure time changes slightly
insert into #temp (Dt, Tm) values (CurDate(), CurTime());
select * from #temp;
/* Output:
ID Dt Tm
-- ---------- -----------
1 02/26/2015 11:50:22 AM
2 02/27/2015 11:51:02 AM
*/
以下查询根据时间正确检索正确的行(当然,调整到适当的数据时间):
select * from #temp where Tm = '11:50:22 AM'
使用ARC32针对具有本机ADT表类型的Advantage 10.10进行测试。