如何比较SQL存储过程中的日期?

如何比较SQL存储过程中的日期?,sql,stored-procedures,informix,Sql,Stored Procedures,Informix,我想使用以下SQL语句在存储过程中查询数据库: SELECT date1 FROM table INTO dates WHERE date1 < CONVERT(VARCHAR(8), GETDATE(), 112) AND date1 > CONVERT(VARCHAR(8), DATEADD(DAY, -4, GETDATE()), 112); 将表中的日期1选择为日期 其中date1CONVERT(VARCHAR(8),DATEADD(DAY,-4,GETDATE()),11

我想使用以下SQL语句在存储过程中查询数据库:

SELECT date1 FROM table INTO dates
WHERE date1 < CONVERT(VARCHAR(8), GETDATE(), 112)
AND date1 > CONVERT(VARCHAR(8), DATEADD(DAY, -4, GETDATE()), 112);
将表中的日期1选择为日期
其中date1CONVERT(VARCHAR(8),DATEADD(DAY,-4,GETDATE()),112);

我在WHERE子句中得到一个错误,我有什么不正确的地方吗?

假设date1是datetime类型,然后使用Between

SELECT date1  INTO dates FROM table
WHERE date1 BETWEEN  CONVERT(VARCHAR(8), DATEADD(DAY, -4, GETDATE()), 112) AND
                     CONVERT(VARCHAR(8), GETDATE(), 112);
   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);
如果date1不是datetime,则将其转换为,然后在之间使用

SELECT date1  INTO dates FROM table
WHERE date1 BETWEEN  CONVERT(VARCHAR(8), DATEADD(DAY, -4, GETDATE()), 112) AND
                     CONVERT(VARCHAR(8), GETDATE(), 112);
   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) 但正如@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);
从表中选择日期1
其中date1CONVERT(VARCHAR(8),DATEADD(DAY,-4,GETDATE()),112);
这应该是有效的Informix语法:

SELECT date1 INTO dates FROM table 
WHERE date1 < today
AND date1 > today - 4 units day ;
从表中选择日期1
今天在哪里
和日期1>今天-每天4个单位;

有关语法的更多信息,请查看

date1包含的值是什么?date1列的格式是什么?我假设不是datetime?where子句出现了什么错误?我在语法上遇到了一个错误。date1是SQL中的DATE类型。奇怪的是,我能够使用DATEADD、GETDATE和CONVERT创建存储过程。不过,在我将查询用于某些数据之前,我还不知道该查询是否真的能工作。我将此语法视为MS SQL SERVER,可能无法工作。如果date1是date或datetime数据类型,则可以将convert+getdate替换为
TODAY
关键字。在第二个convert()表达式中,您可以用这个
today-4 units day
替换它。您可以发布这段代码的样子,不知道
today-4 units day
的意思是什么关于select仅返回一行,如何创建仅返回一行的sql语句,
从表中选择date1-INTO-dates,其中date1CONVERT(VARCHAR(8),DATEADD(DAY,-4,GETDATE()),112)会不会?我能够每天利用单位来解决我遇到的问题,SQL与Informix有一些关键的区别。