我想創建一個報告,從今天交貨日期的SQL Server數據庫獲取記錄。如何比較只有日期部分今天交貨日期
我已經試過
select * from (tablename)
where delivery_date = getdate()
雖然這並沒有給我任何錯誤,也沒有給我任何記錄無論是。
我猜想這是因爲所有的日期是這樣的:
2016-03-15 00:00:00.000
也許,我需要截斷日期刪除時間戳,然後嘗試?
我想創建一個報告,從今天交貨日期的SQL Server數據庫獲取記錄。如何比較只有日期部分今天交貨日期
我已經試過
select * from (tablename)
where delivery_date = getdate()
雖然這並沒有給我任何錯誤,也沒有給我任何記錄無論是。
我猜想這是因爲所有的日期是這樣的:
2016-03-15 00:00:00.000
也許,我需要截斷日期刪除時間戳,然後嘗試?
你可以嘗試查詢像下面
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)
將工作一樣好。
如果所有交貨日期都沒有時間部分,那麼也應考慮將列類型更改爲DATE以節省一些空間。 –
非常感謝Dhruv。我試過這個代碼,它的工作。 Badi Mehrbaani aapki。再次感謝你。 – user1777929
@ user1777929您的評論使我的一天:) – DhruvJoshi
如果DELIVERY_DATE總是午夜(00:00:00.000
),那麼這樣的比較吧:
select * from (tablename)
where delivery_date = datediff(d, 0, getdate())
使用datediff
這樣是截斷datetime值的時間部分的快捷方式。
喲需要刪除delivery_date字段的時間部分和GETDATE()值。
SELECT *
FROM (tablename)
WHERE DATEADD(dd, DATEDIFF(dd, 0, delivery_date), 0) = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)
我只是創建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
試試這個:
DECLARE @Today DATETIME SET @如今= CONVERT(日期,GETDATE())
SELECT * FROM(表名) 其中DELIVERY_DATE = @Today
您可以將'getdate()'強制轉換爲'日期' - 這會切斷時間。或者使用日期範圍,如果'delivery_date'存儲也可能包含時間(如果是這樣,我建議使用這種方法,而不是將兩邊都轉換爲'date')。 –