2
SET @dateFrom = ''
SET @dateTo = ''

SELECT [tNumber], [createdDate], [Total], [pfAmount] FROM [webtable]
WHERE [tNumber] LIKE '%' 
AND [createdDate] > @dateFrom+'%' 
AND [createdDate] < @dateTo+'%' 

我试图让查询显示数据库中的所有值,如果日期为空白,或者如果 @dateFrom 和 @dateTo 有一个值,那么它应该过滤那些特定的结果

4

6 回答 6

2
SELECT [tNumber], [createdDate], [Total], [pfAmount] FROM [webtable]
WHERE [tNumber] LIKE '%' 
AND (
        (       [createdDate] > @dateFrom --removed +'%'
            AND [createdDate] < @dateTo ) --close 2nd parentheses and removed +'%'
        OR      COALESCE(@dateFrom,@dateTo) IS NULL
    ) --close 1st parantheses

COALESCE()在括号内逐一计算,直到找不到 NULL 值。如果所有值都为 NULL,则返回 NULL。用我写这个语句的方式,如果两个参数都是 NULL,那么什么都不会被过滤[createdDate]

更新

移除+'%'

于 2013-10-31T12:00:59.350 回答
1

尝试这个

    SET @dateFrom = ''
    SET @dateTo = ''

    SELECT [tNumber], [createdDate], [Total], [pfAmount] FROM [webtable]
    WHERE [tNumber] LIKE '%' 
    AND CASE 
            WHEN (@dateFrom = '' OR @dateTo = '') THEN ([createdDate] LIKE '%')
        ELSE  ([createdDate] BETWEEN @dateFrom and @dateTo)
        END
于 2013-10-31T12:05:06.310 回答
1

尝试这个 :

SET @dateFrom = ''
SET @dateTo = ''
IF(@dateFrom = '' AND @dateTo='')
BEGIN
SELECT [tNumber], [createdDate], [Total], [pfAmount] FROM [webtable]
END
ELSE
BEGIN
SELECT [tNumber], [createdDate], [Total], [pfAmount] FROM [webtable]
WHERE [tNumber] LIKE '%' 
AND [createdDate] > convert(DATE,@dateFrom) 
AND [createdDate] < COnvert(Date,@dateTo)
END
于 2013-10-31T12:13:03.563 回答
0
 declare @fdate datetime
 declare @tdate datetime
 set @fdate=''--'2013-10-10'
 set @tdate=''--'2013-10-10'
 select * from yourTable where (datefield>@fdate or @fdate='') and (datefield<@tdate or @tdate='') 

尝试这个..

于 2013-10-31T12:08:04.053 回答
0
SELECT [tNumber], [createdDate], [Total], [pfAmount] FROM [webtable]
WHERE [tNumber] LIKE '%' 
AND (@dateFrom = '' OR [createdDate] > @dateFrom+'%')
AND (@dateTo = '' OR [createdDate] < @dateTo+'%')
于 2013-10-31T13:11:31.583 回答
0

要显示日期为空的记录,您可以像这样使用以下查询

select * from [webtable] where ID not in (Select ID from [webtable] where  [createdDate] > COnvert(Date, ''))
于 2015-06-18T14:06:49.500 回答