在SQL Server中使用日期时间和动态查询 [英] Working with datetime with dynamic query in SQL Server

查看:259
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆