[英]Comparing effective dates in SQL
想知道為什么在需要查看有效的開始日期和結束日期的WHERE子句中選擇記錄更好?
目前,這就是我過去在MS SQL Server上所做的方式。 只是擔心日期而不是時間。 我正在使用SQL Server 2005。
AND Convert(datetime, Convert(char(10), ep.EffectiveStartDate, 101))
<= Convert(datetime, Convert(char(10), GetDate(), 101))
AND Convert(datetime, Convert(char(10), ep.EffectiveEndDate, 101))
>= Convert(datetime, Convert(char(10), GetDate(), 101))
太糟糕了,看看“ 僅在數據庫中您可以通過更改幾行代碼來獲得1000%+的改進”,以了解如何優化此代碼 ,因為這是不可靠的
還要簽出不帶時間的獲取日期時間和帶日期的查詢優化
@Darren Kopp-您可以使用
set @date2 = '20201001'
這會讓你失去演員。
footndale-您也可以使用日期算術刪除時間。 就像是
select dateadd(d, datediff(d, 0, CURRENT_TIMESTAMP), 0)
獲取今天的日期(無時間)。 我相信這比來回轉換更有效。
@達倫·科普
注意BETWEEN,請查看SQL Server之間的日期之間如何工作?
AND DateDiff(Day, 0, GetDate()) + 1 > ep.EffectiveStartDate
AND DateDiff(Day, 0, GetDate()) < ep.EffectiveEndDate
我認為您會發現這些條件可以提供最佳性能。 這將愉快地利用索引。
我也非常確定這是正確的,並將提供正確的數據。 沒有時間部分的日期無需進一步計算。
嘗試
ep.EffectiveStartDate BETWEEN @date1 AND @date2
你會在哪里做類似的事情
declare @date1 datetime, @date2 datetime;
set @date1 = cast('10/1/2000' as datetime)
set @date2 = cast('10/1/2020' as datetime)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.