如何两个给定日期比较日期从时间字段来在SQL Server(How to compare two g

2019-10-18 12:39发布

我有用户输入的日期时间像场CreatedONCreatedEND ,这些都是有日期时间格式,如(29-02-2013)和(2013年12月4日)(这是样本值仅)

我有在SQL Server等一列CreatedDatetime像这样2013年9月3日和2013年2月3日的值(这些仅是样本值)现在,我需要检查CreatedDatetime场是否与CreatedONCreatedEND两个给定日期...

我如何可以比较来自数据库来使用这两个值的日期..这需要比较仅在SQL Server中完成

会不会有人提出这方面的任何想法和解决方案。许多在此先感谢..

编辑:

   DECLARE  @return_value int

EXEC    @return_value = [dbo].[tp_SelectTransactionHistorySearch]
        @OffSetRowNo = 1,
        @FetchRowNo = 1,
        @StatusSelection = N's',
        @isReviewed = NULL,
        @ProjectCaseNumber = NULL,
        @CostPageNumber = NULL,
        @TransactionTypeChange = NULL,
        @DescriptionChange = NULL,
        @TrasactionCreateOnBeginDate = N'19-03-2013',
        @TransactionCreatedOnEndDate = N'20-03-2013',
        @TransactionUpdatedOnBeginDate = N'10-04-2013',
        @TransactionUpdateOnEndDate = N'11-04-2013',
        @ItemID = NULL

SELECT  'Return Value' = @return_value

GO

错误:消息8114,级别16,状态5,过程tp_SelectTransactionHistorySearch,行0的误差数据类型为nvarchar转换成日期时间。

Answer 1:

您可以尝试使用CAST这样的: -

(CreatedDatetime >= CAST(CreatedON AS DATE)) AND (CreatedDatetime < CAST(CreatedEND AS DATE))


Answer 2:

如果用户从另一系统/程序输入日期然后使用参数:

DECLARE @CreatedON AS DATETIME = '';
DECLARE @CreatedEND AS DATETIME = '';

SELECT 
    CASE WHEN CreatedDatetime BETWEEN @CreatedON AND @CreatedEnd 
    THEN 'True' ELSE 'False' END

但是,如果值已经存储在数据库中,然后只是比较领域

SELECT 
    CASE WHEN CreatedDatetime BETWEEN CreatedON AND CreatedEnd 
    THEN 'True' ELSE 'False' END
FROM TimeTable

或者如果它们存储为字符串(DD-MM-YYYY)然后:

SELECT 
    CASE WHEN CreatedDatetime BETWEEN CONVERT(DATETIME, CreatedON, 105) AND
              CONVERT(DATETIME, CreatedEnd, 105) THEN 'True' ELSE 'False' END


文章来源: How to compare two given dates with date coming from datetime field in sql server