按日期过滤记录

问题描述 投票:0回答:1

我想过滤两个日期之间的数据,但是当将其存储在临时变量中并执行时,出现以下错误

消息 8114,第 16 层,状态 5,第 11 行
将数据类型 varchar 转换为 datetime 时出错

此代码有效:

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
sql-server
1个回答
0
投票

如果我猜到这个代码:

CONVERT(VARCHAR(10),CreatedDate,103);

您表中的此字段

CreatedDate
具有无效值。

© www.soinside.com 2019 - 2024. All rights reserved.