我想使用以下SQL语句在存储过程中查询数据库:
SELECT date1 FROM table INTO dates
WHERE date1 < CONVERT(VARCHAR(8), GETDATE(), 112)
AND date1 > CONVERT(VARCHAR(8), DATEADD(DAY, -4, GETDATE()), 112);
我在WHERE子句上遇到错误,我做错了什么?
答案 0 :(得分:1)
假设date1是datetime类型,那么Use Between
SELECT date1 INTO dates FROM table
WHERE date1 BETWEEN CONVERT(VARCHAR(8), DATEADD(DAY, -4, GETDATE()), 112) AND
CONVERT(VARCHAR(8), GETDATE(), 112);
如果date1不是日期时间,则将其转换为“之间使用
” SELECT date1 INTO dates FROM table
WHERE CONVERT(VARCHAR(8), date1, 112) BETWEEN CONVERT(VARCHAR(8), DATEADD(DAY, -4, GETDATE()), 112) AND
CONVERT(VARCHAR(8), GETDATE(), 112);
答案 1 :(得分:1)
语法错误是因为INTO
错误。
1)但正如@Jonathan所提到的那样,GETDAT,CONVERT,DATEADD这些功能
不是本机的,在INFORMIX数据库中不存在。除非你创造它...
2)“日期”应该是您SPL的变量。
3)SELECT应该只返回1行....
SELECT date1 INTO dates FROM table
WHERE date1 < CONVERT(VARCHAR(8), GETDATE(), 112)
AND date1 > CONVERT(VARCHAR(8), DATEADD(DAY, -4, GETDATE()), 112);
这应该是有效的Informix语法:
SELECT date1 INTO dates FROM table
WHERE date1 < today
AND date1 > today - 4 units day ;
有关语法的详细信息,请查看IBM Knowledge Center