sql日期范围查询函数fn_ltDate

发布时间:2019-07-22编辑:脚本学堂
分享一个日期范围查询实用函数fn_ltDate,掌握下sql中日期查询的方法,有需要的朋友参考下。

根据日期范围来查询。
表单中输入 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 
END 
ELSE 
BEGIN 
    PRINT '不存在,新建' 
END 
GO 
   
--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 
AS 
BEGIN 
    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 
    END 
      
    RETURN @result 
END 
GO 
   
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 

SQL时间段查询实例分享
SQL递归查询实例
sql语句之递归查询
sql server模糊查询语句示例
sql server 模糊查询的常用方法举例
sql递归查询代码(cte应用)
sql2005递归查询的例子
sql 递归查询的代码(图文)