2013-04-10 239 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