use*_*840 5 sql t-sql sql-server datetime sql-server-2005
我正在使用它
DECLARE @Year_Filter_Start AS DATETIME
SET @Year_Filter_Start = DATEADD( dd, -1, DATEADD( yy, DATEDIFF( yy, 0, GetDate() ), 0 ) )
DECLARE @Year_Filter_End AS DATETIME
SET @Year_Filter_End = GetDate()
INSERT INTO TABLE
( blah )
SELECT blah
FROM OTHER_TABLE
WHERE ACTISSUEDATE IS NULL
OR ACTSTARTDATE BETWEEN @Year_Filter_Start AND @Year_Filter_End
Run Code Online (Sandbox Code Playgroud)
并且它返回ACTISSUEDATE不为空且ACTSTARTDATE不在年份开始和今天之间的记录.@Year_Filter_Start应该是今年的开始,@ Year_Filter_End应该是今天.
例如:
ACTSTARTDATE是2010-08-02和ACTISSUEDATE的记录是2011-03-15
或者ACTSTARTDATE是2009-05-18,ACTISSUEDATE是2009-09-06
这个陈述有什么问题吗?
首先,您希望两个条件都为真还是其中一个为真。 其次,它为您提供 ACTISSUEDATE 不为空的记录,因为这些记录在年初和今天之间具有 ACTSTARTDATE。那些 ACTSTARTDATE 不在年初和今天之间的记录的 ACTISSUEDATE 为 NULL。
改变你要去的地方 AND 而不是 OR