Sql Server 日期转换问题!!! 20jaic4584808]

发布时间:2014-1-1 0:09:48编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Sql Server 日期转换问题!!! 20jaic4584808]",主要涉及到Sql Server 日期转换问题!!! 20jaic4584808]方面的内容,对于Sql Server 日期转换问题!!! 20jaic4584808]感兴趣的同学可以参考一下。

ALTER Procedure [dbo].[proc_Test]( @StartTime datetime = NULL, @EndTime   datetime = NULL ) AS  exec('SELECT   * FROM Test T WHERE ([email protected]+'  is NULL or DATEDIFF(day,[email protected]+', T.CreateTime) >= 0) and ( [email protected]+' is NULL or DATEDIFF(day,[email protected]+', T.CreateTime) <= 0)  ORDER BY ID ') 报错为  消息 241,级别 16,状态 1,过程 proc_OrderForm_Select,第 48 行 从字符串转换日期和/或时间时,转换失败。 不知如何解决啊

try- ALTER Procedure [dbo].[proc_Test](     @StartTime datetime = NULL,     @EndTime      datetime = NULL ) AS  exec('SELECT           *     FROM         Test T     WHERE         ([email protected]+'              is NULL or DATEDIFF(day,'+convert(varchar(19),@StartTime,120)+', T.CreateTime) >= 0) and         ( '+convert(varchar(19),@EndTime,120)+' is NULL or DATEDIFF(day,'+convert(varchar(19),@EndTime,120)+', T.CreateTime) <= 0)      ORDER BY         ID ')

这个没必要动态执行,还有你检查一下是否都能转成日期呀,提示很明显

exec('SELECT           *     FROM         Test T     WHERE         ([email protected]+'              is NULL or DATEDIFF(day,'+cast(@StartTime as varchar(50))+', T.CreateTime) >= 0) and         ( [email protected]+' is NULL or DATEDIFF(day,[email protected]+', T.CreateTime) <= 0)      ORDER BY         ID ')

SELECT           *     FROM         Test T     WHERE         @StartTime             is NULL or DATEDIFF(day,@StartTime, T.CreateTime) >= 0) and         @EndTime is NULL or DATEDIFF(day,@EndTime, T.CreateTime) <= 0)      ORDER BY         ID )

'SELECT           *     FROM         Test T     WHERE         ('+CONVERT(NVARCHAR,@StartTime,111)+'              is NULL or DATEDIFF(day,'+CONVERT(NVARCHAR,@StartTime,111)+', T.CreateTime) >= 0) and         ( '+CONVERT(NVARCHAR,@EndTime,111)+' is NULL or DATEDIFF(day,'+CONVERT(NVARCHAR,@EndTime,111)+', T.CreateTime) <= 0)      ORDER BY         ID '

SELECT           *     FROM         Test T     WHERE         @StartTime             is NULL or DATEDIFF(day,@StartTime, T.CreateTime) >= 0) and         @EndTime is NULL or DATEDIFF(day,@EndTime, T.CreateTime) <= 0)      ORDER BY         ID  还多了个括号

非常的迷糊!

你们都忘记加上   'DATEDIFF(day,' + '''' + CONVERT(NVARCHAR,@StartTime,111)+'''' + '....'


上一篇:与Window7兼容的sql server版本 20aCfeng]
下一篇:表结构设计问题 20sgliuzhijie]

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款