试图在advantage查询中进行时间比较。还没有在Advantage文档中找到答案。看起来应该很简单。
表的定义是:
CREATE TABLE TBL (
ID AutoInc,
Date Date,
[T] Time
)基于这本关于谷歌图书的书,我想我应该能够与如下所示的文字进行比较:
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发布于 2015-02-27 16:38:36
您应该始终使用时间‘’HH:MM:SS‘(24h)或时间’‘HH:MM:SS’(12h)文字格式:
SELECT * FROM TBL WHERE [T] > TIME'09:00:00 am'我认为您得到了2124错误,因为您使用的是大写am/pm符号,或者是因为您没有使用前导零。
另请参阅:
literals.htm
发布于 2015-02-27 16:55:43
从SQL文本下的文档(在ADS帮助文件中,在Advantage‘SQL,第二部分- Advantage,第11章- Advantage介绍,SQL文字)
时间文字以单引号括在一起,并使用以下四种格式之一: HH:MM、HH:MM AM (或PM)、HH:MM:SS或HH:MM:SS AM (或PM)。如果文字中缺少AM (或PM),则假定24小时时间。时间文字的AM/PM部分不区分大小写。以下是有效的时间文本: “19:10” ‘凌晨4点43分’ '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进行测试。
https://stackoverflow.com/questions/28769321
复制相似问题