sql-server - 按日期过滤记录
问题描述
我想过滤两个日期之间的数据,但是将其存储在临时变量中并执行时,出现以下错误
消息 8114,级别 16,状态 5,第 11
行将数据类型 varchar 转换为日期时间时出错
此代码有效:
DECLARE @Where VARCHAR(400)
DECLARE @FromDate DATETIME
DECLARE @ToDate DATETIME
SET @FromDate = '2018-11-02'
SET @ToDate = '2018-11-19'
SELECT *
FROM StudentInfo studentinfo
WHERE CreatedDate BETWEEN @FromDate AND @ToDate
CREATE PROCEDURE GetUserData --'2018-11-02','2018-11-17'
@FromDate DATETIME,
@ToDate DATETIME
AS
BEGIN
DECLARE @ab VARCHAR(400)
SET @ab= 'select StudID,FirstName,LastName,CountryCode+(SELECT REPLACE(LTRIM(REPLACE(Contact,''0'','' '')),'' '',''0'')) as Contact,EmailID1,CurrentEdu,PreferredCountry,CurrentInstitution,
CONVERT(VARCHAR(10),CreatedDate,103) as RegistrationDate,
OrganisationID,EventId,CreatedDate
from studentinfo
where 1=1 and
CreatedDate BETWEEN'+ @FromDate+'and'+ @ToDate+''
EXEC @ab
END
解决方案
declare @ab varchar(400)
set @ab= 'select StudID,FirstName,LastName,CountryCode+(SELECT REPLACE(LTRIM(REPLACE(Contact,''0'','' '')),'' '',''0'')) as Contact,EmailID1,CurrentEdu,PreferredCountry,CurrentInstitution,
CONVERT(VARCHAR(10),CreatedDate,103) as RegistrationDate,
OrganisationID,EventId,CreatedDate
from studentinfo
where 1=1 and
CreatedDate BETWEEN BETWEEN '''+convert(varchar, @FromDate , 20)+''' and '''+ convert(varchar, @ToDate, 20)+''''
exec (@ab)
END
推荐阅读
- google-apps-script - 使用 Google Web App URL 参数作为函数的一部分
- mongodb - MongoDB 集合 toArray() 长度比 collection.count() 少 20
- javascript - 如何在浏览器中使用为nodejs编写的简单函数
- c# - 在应用程序运行时安装字体
- reactjs - TypeError:无法读取反应应用程序中未定义的属性“推送”
- android - 运行应用程序时出现错误“$flutterSdkpath\packages\flutter_tools\gradle\app_plugin_loader.gradle”
- javascript - 在 vuejs 中页面刷新(shift+F5)期间调用了哪个生命周期方法?
- python-3.x - 从维基百科页面抓取所有图像
- c++ - 如何使用 spdlog 打印 std::map
- scala - 在 nullSafeJoin scala spark 之后避免重复库