在SQL Server中使用日期时间和动态查询 [英] Working with datetime with dynamic query in SQL Server
本文介绍了在SQL Server中使用日期时间和动态查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用动态查询,其中我想使用保存日期时间的变量,每当我执行查询时,它说不能将日期时间从字符串转换为变量,将变量转换为 varchar(max)
,它将其作为字符串而不是 datetime
,所以我应该如何执行查询。
I am using a dynamic query wherein I want to use the variable which holds the datetime, whenever I execute the query it says cannot convert datetime from string, when I cast that variable to varchar(max)
, it takes it as string and not datetime
, so how should I execute the query..
以下是我要执行的SQL查询。
Below is my SQL query which I am trying to execute.
SET @SQL1 = 'SELECT B.FacId, B.FacName, B.BookCode, B.BookName, B.Quantity,
CONVERT(VARCHAR(10), B.TillDate, 104) AS TILLDATE FROM '+@TABLE+' B
WHERE B.TillDate BETWEEN CONVERT(VARCHAR(10),'+@FROMDATE+', 101) and
CONVERT(VARCHAR(10), DATEADD(DD,1,'+@TODATE+'), 101)'
EXEC SP_EXECUTESQL @SQL1
此处 @fromdate
和 @todate
是来自不同临时表的 datetime
类型。并存储在这些变量中。
here @fromdate
and @todate
are the datetime
type coming from different temp table. and stored in these variable..
我应如何执行此查询?
推荐答案
您需要引用日期。.
SET @SQL1 =
'SELECT B.FacId,
B.FacName,
B.BookCode,
B.BookName,
B.Quantity,
CONVERT(VARCHAR(10), B.TillDate, 104) AS TILLDATE
FROM '+@TABLE+' B
WHERE B.TillDate BETWEEN ''' + CONVERT(VARCHAR(10),@FROMDATE, 101) + ''' and ''' + CONVERT(VARCHAR(10),DATEADD(DD,1,@TODATE), 101) + ''''
这篇关于在SQL Server中使用日期时间和动态查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文