日期範圍查詢實用函式 fn ltDate

2021-06-16 10:06:18 字數 2173 閱讀 2344

根據日期範圍來查詢是很常見的操作。表單中輸入 2012-05-01 到 2012-10-01, 很容易漏掉 2012-10-01 這一天的記錄, 而且總要判斷 is null 或者空串等也比較麻煩, 故寫了這段函式。

if exists(

select *

from dbo.sysobjects

where id = object_id(n'[dbo].fn_ltdate')

and (type = 'fn' or type = 'tf' or type = 'if')

)begin

print '已存在,刪除再新建'

drop function fn_ltdate

endelse

begin

print '不存在,新建'

endgo

--create by: yenange

--description: 前日期是否<=後面的日期(在同一天也算是小於等於)

--parameters : @startdate 前日期,@enddate 後日期.

-- 兩引數傳入時的型別可為 varchar 或者 datetime 型

-- 若有一引數為null或者'', 則返回1 (也算是小於等於)

--return : 是 1 否 0

create function dbo.fn_ltdate

( @startdate varchar(32),

@enddate varchar(32)

)returns bit

asbegin

declare @result bit

set @result = 0

if (

ltrim(rtrim(isnull(@startdate, ''))) = ''

or ltrim(rtrim(isnull(@enddate, ''))) = ''

or datediff(day, @startdate, '1900-01-01 00:00:00.000') = 0

or datediff(day, @enddate, '1900-01-01 00:00:00.000') = 0

or datediff(day, @startdate, @enddate) >= 0

)begin

set @result = 1

endreturn @result

endgo

declare @temptalbe table (id int, createtime datetime)

insert into @temptalbe

select 1,'2012-1-2' union

select 2,'2012-3-2 00:00:00' union

select 3,'2012-4-2' union

select 4,'2012-5-2 23:59:59' union

select 5,'2012-6-2 23:59:59'

--引數為 datetime 型

declare @startdate1 datetime

declare @enddate1 datetime

set @startdate1 = '2012-3-2'

set @enddate1 = ''

select *

from @temptalbe t

where dbo.fn_ltdate(@startdate1, createtime) = 1

and dbo.fn_ltdate(createtime, @enddate1) = 1

--引數為 varchar 型

declare @startdate2 varchar(10)

declare @enddate2 varchar(10)

set @startdate1 = '2012-3-2'

set @enddate1 = '2012-5-2'

select *

from @temptalbe t

where dbo.fn_ltdate(@startdate1, createtime) = 1

and dbo.fn_ltdate(createtime, @enddate1) = 1

查詢日期範圍比較

假 設資料庫中有兩個字段 range start和range end,分別存放證書的有效時間範圍。使用者輸入乙個查詢條件範圍 check start和check end,想要找到在這個時間範圍內所有有效的證書。邏輯應該是 證書有效開始日期大於查詢條件結束日期的不可以查出來,或者證書失效日期小於查詢條...

mongodb日期範圍 MongoDb查詢日期範圍

mongodb查詢轉物件是出錯element id does not match any field or property of class mongodb查詢轉物件是出錯element id does not match any field or property of class 解決方法 1...

Oracle日期範圍查詢交叉查詢方法

在日常開發中,有時候會需要查詢某個日期範圍內,但是通過資料庫查詢時開始時間需要資料庫有的才能查詢到,若是在jsp介面輸入的時間大於或小於資料庫的日期是查詢不出資料的 那麼此時我們可以用交叉查詢的方式,下面是我對這個的理解,若是有問題,望各位大神提出來,不勝感激!在oracle中,有時需要用到查詢日期...