1

我很难弄清楚这一点,并在这里尝试了一切。我知道这很简单...

我们的日期以 int 形式存储在表中。EX 20130409。如何让 SQL 返回小于今天日期的日期?

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

这是一些最近的代码:

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))
4

2 回答 2

0

尝试声明今天的日期并使用它

Declare todaysDate date
Set todaysDate = getdate()

然后将todaysDate转换为字符串,然后去掉年月日之间的'-',然后....

Select..... Where shipdate <= todaysDate
于 2013-04-10T21:02:00.820 回答
0

您只需将“20130101”更改为您的 int 值。

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

问候

于 2013-04-10T21:14:00.913 回答