我想比較C#日期時間與存儲過程中的SQL服務器日期時間,但它不斷給我轉換錯誤。比較C#日期與查詢中的SQL日期
起初別人做這個甲骨文功能:
'Select blabla from bla WHERE (TO_DATE (''' + cast(@dateEnd as varchar(50)) + ''',''yyyy/mm/dd'') >= SPOT_ENDDAT)
而且我想改變這SQL,但SQL你沒有TO_DATE功能。
任何想法?還是應該在我的.net程序本身的級別上進行更改?如果是,我該怎麼辦?
編輯:
打電話給我的函數存儲過程使用此參數:
DateTime EndDate = DateTime.Today;
ParamList.Add(new <class>.Parameter("EndDate", ParameterDirection.Input, EndDate, DbType.Date));
存儲過程:
ALTER PROCEDURE dbo.uspGetValues
@EndDate = null;
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQL as NVARCHAR(4000)
Set @SQL = 'SELECT * FROM T_SPOTSHOP_DATA WHERE SPOT_ENDDATE IS NOT NULL'
if(@EndDate is not null)
Set @SQL = @SQL + 'AND (' + @EndDate +' <= SPOT_ENDDATE'
EXEC(@SQL)
編輯解決方案:
對於那些誰擁有同樣的問題,我修好了 另一種方式。在C#我會用:
DateTime EndDate = DateTime.Today.toString(yyyy-MM-dd);
ParamList.Add(new <class>.Parameter("EndDate", ParameterDirection.Input, EndDate, DbType.Date));
,我抓住它在我的存儲過程爲:
EndDate Varchar(50)
SET @SQL = @SQL + 'WHERE CONVERT(DATETIME, '''+ @EndDate +''', 121) >= SPOT_ENDDATE
這是一個非常醜陋的方式做到這一點,但它的工作原理。希望它可以幫助你們!
記得要使您的C#DateTime字符串成爲您在SQL Server中與之比較的SAME格式。 –
這是我的問題,我怎樣才能得到它相同的格式? ^^ – Akorna