2013-08-20 87 views
1

我有用戶輸入的日期時間字段,如CreatedONCreatedEND,這些日期時間格式爲(29-02-2013)和(12-04-2013) )(這些只是樣本值)如何比較兩個給定的日期與日期時間字段在SQL服務器的日期

我在sql server中有一列,如CreatedDatetime和2013-09-03和2013-02-03這樣的值(這些僅是樣本值) 現在我需要檢查CreatedDatetime字段是否在CreatedONCreatedEND兩個給定日期之間...

我該如何比較來自da tabase與這兩個值.. 這種比較需要在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 

ERROR:消息8114,級別16,狀態5,過程tp_SelectTransactionHistorySearch,行0 錯誤數據類型爲nvarchar轉換成日期時間。

+0

嗯,我已經存儲的那些如日期只有.... –

回答

2

您可以嘗試使用CAST這樣的: -

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

非常感謝.... –

+0

歡迎您!!!! :) –

+0

請參閱此問題http://stackoverflow.com/questions/18328297/not-able-to-pass-input-parameters-to-stored-procedure/18328437?noredirect=1#18328437我在錯誤轉換... –

0

如果用戶從另一系統/程序中輸入一個日期,然後使用參數:

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