2016-03-15 149 views
6

我想創建一個報告,從今天交貨日期的SQL Server數據庫獲取記錄。如何比較只有日期部分今天交貨日期

我已經試過

select * from (tablename) 
where delivery_date = getdate() 

雖然這並沒有給我任何錯誤,也沒有給我任何記錄無論是。

我猜想這是因爲所有的日期是這樣的:

2016-03-15 00:00:00.000 

也許,我需要截斷日期刪除時間戳,然後嘗試?

+0

您可以將'getdate()'強制轉換爲'日期' - 這會切斷時間。或者使用日期範圍,如果'delivery_date'存儲也可能包含時間(如果是這樣,我建議使用這種方法,而不是將兩邊都轉換爲'date')。 –

回答

11

你可以嘗試查詢像下面

select * from (tablename) 
where CAST(delivery_date as date) = CAST(getdate() as date) 

此外,如果所有的交付日期還有時間部分像00:00:00.000肯定然後

select * from (tablename) 
where delivery_date = CAST(getdate() as date) 

將工作一樣好。

+1

如果所有交貨日期都沒有時間部分,那麼也應考慮將列類型更改爲DATE以節省一些空間。 –

+0

非常感謝Dhruv。我試過這個代碼,它的工作。 Badi Mehrbaani aapki。再次感謝你。 – user1777929

+0

@ user1777929您的評論使我的一天:) – DhruvJoshi

3

如果DELIVERY_DATE總是午夜(00:00:00.000),那麼這樣的比較吧:

select * from (tablename) 
where delivery_date = datediff(d, 0, getdate()) 

使用datediff這樣是截斷datetime值的時間部分的快捷方式。

0

喲需要刪除delivery_date字段的時間部分和GETDATE()值。

SELECT * 
FROM (tablename) 
WHERE DATEADD(dd, DATEDIFF(dd, 0, delivery_date), 0) = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0) 
1

我只是創建2個參數。一個用於StartTime,另一個用於EndTime並在我的查詢中使用它們。

DECLARE @StartTime DATETIME, 
     @EndTime DATETIME 

SET @StartTime = DATEDIFF(d,0,GETDATE()) 
SET @EndTime = DATEADD(d,1,@StartTime) 

SELECT * 
FROM [tablename] 
WHERE delivery_date >= @StartTime 
     AND delivery_date < @EndTime 
0

試試這個:

DECLARE @Today DATETIME SET @如今= CONVERT(日期,GETDATE())

SELECT * FROM(表名) 其中DELIVERY_DATE = @Today

相關問題