2013-04-10 126 views
1

我很难弄清楚这一点,并试图在这里的一切。我知道这很简单...SQL比较INT GETDATE

我们的日期在表中存储为int。 EX 20130409.如何让SQL返回比今天的日期更少的日期?

我一直在使用不同的转换和转换组合,但不断收到溢出错误或转换失败。

下面是最近的一些代码:

SELECT 
DBO.SPSYS07.LOC_CODE, 
CONVERT(DATETIME,CAST(DBO.SPSYS07.REQ_D_DATE AS CHAR(8)),101) AS [CONVERTED_REQ_DATE], 
DBO.SPSYS07.REQ_D_DATE 
FROM DBO.SPSYS07 
WHERE SPSYS07.SHIP_DATE <= convert(int,convert(varchar(8),getdate(),112)) 
+1

*** *** SQL只是*结构化查询语言* - 许多数据库系统中使用的语言,但没有AA数据库产品......很多事情都是特定于供应商 - 所以我们真的需要知道你使用的数据库系统**(和哪个版本)...... – 2013-04-10 21:00:44

+0

格式__101__与__112非常不同__...如果你在选择列表中注释掉'convert' ? – 2013-04-10 21:12:00

+0

你在使用java/c#吗?你可以代码转换。 – BrOSs 2013-04-10 21:19:19

回答

0

尝试宣告今天的日期,并使用该

Declare todaysDate date 
Set todaysDate = getdate() 

然后转换todaysDate为一个字符串,然后删除“ - ”年,月,日之间,然后....

Select..... Where shipdate <= todaysDate 
0

你只需要改变'20130101'为你的int值。

DECLARE @date date 
SELECT @date = CONVERT(date, CAST('20130101' AS CHAR(12)), 112) 
SELECT * FROM yourTable where @date < getdate() 

问候

+0

这告诉我,将变量赋值给变量的Select语句不能与数据检索操作结合使用。 – user1604264 2013-04-10 22:00:00