2016-10-28 32 views
1
@TimeCurr Char(1) 

SELECT RecordDate, a, b,c 
FROM tbl_xyz 
WHERE 1 = 1 
AND 

如果@TimeCurr = 'Y' 然後 RecordDate = GETDATE()SQL - 如果param空然後省略標準在WHERE子句

如果@TimeCurr = 'N' 然後 RecordDate < = GETDATE()

if @TimeCurr = Null 然後完全忽略標準。我們怎樣才能做到這一點?

+1

'(ISNULL OR CASE ... END)' –

+0

您正在使用哪些DBMS? –

回答

1

事情是這樣的:

SELECT RecordDate, a, b,c 
FROM tbl_xyz 
WHERE 1 = 1 AND 
     ((@TimeCurr = 'Y' AND RecordDate = CAST(GetDate() as date)) OR 
     (@TimeCurr = 'N' AND RecordDate <= GetDate()) OR 
     @TimeCurr IS NULL 
    ); 

基於使用的GETDATE(),我猜測你是使用SQL Server。如果是這樣,功能GETDATE()返回一個日期/時間值。你通常不想使用=。這就是爲什麼我將它轉換爲日期,假設RecordDate實際上是一個沒有時間分量的日期。