本文介绍了**请解决此SQL查询。面对将表达式转换为数据类型datetime的错误。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 嗨朋友, 请解决此查询 创建 proc Sp_test1 @ date1 nvarchar ( 50 ), @ date2 nvarchar ( 50 ) as 选择 distinct m.mcidno, CONVERT ( VARCHAR ( 10 ),h.hdate, 103 ) as hdate 来自 Tbl_Machine m inner join Tbl_History h on 毫米cidno = h.mcidno 其中 h.hdate @ date1 和 @ date2 这里是Tbl_History表 hdate的数据类型是datetime。 ex:2013-06-12 00:00:00.000 当我执行 选择 CONVERT ( varchar ( 10 ),hdate, 103 ) as hdate 来自 tbl_history它工作正常。 它提供输出 喜欢 12/06/2013 选择 distinct m.mcidno, CONVERT ( VARCHAR ( 10 ),h.hdate, 103 ) as hdate from Tbl_Machine m inner join Tbl_History h m.mcidno = h.mcidno一切正常 在给出条件之后 Ex: exec Sp_test1 ' 06/05/2013',' 20/06/2013' 显示错误,如将表达式转换为数据类型datetime的算术溢出错误 请解决此查询.. 解决方案 如果您使用的是SQL SERVER,请使用此转换(datetime,@ date1,103) 喜欢你的情况类似 reate proc Sp_test1 @ date1 nvarchar(50), @ date2 nvarchar(50) as 选择不同的m.mcidno,将(datetime,h.hdate,103)转换为hdate 来自Tbl_Machine m inner join Tbl_History h on m.mcidno = h.mcidno 其中h.hdate介于convert(datetime,@ date1,103)之间和convert(datetime,@ date2,103) 你确定SQL中的文化细节是否正确? 如果文化的日期格式是错误的,那么它可能试图找到一年中的第20个月。 尝试写下你的参数这是'2013年6月20日',看看你是否仍然遇到问题。 嗨亲爱的 请更改你的103转换代码到120,并将varchar(10)增加到20 如下例所示: 选择CONVERT (VARCHAR(19),GETDATE(),120) Hi Friends,Please solve this Query create proc Sp_test1 @date1 nvarchar(50), @date2 nvarchar(50)as select distinct m.mcidno, CONVERT(VARCHAR(10),h.hdate,103)as hdate from Tbl_Machine m inner join Tbl_History h on m.mcidno=h.mcidno where h.hdate between @date1 and @date2 Here in Tbl_History Tablehdate's datatype is datetime. ex: 2013-06-12 00:00:00.000when i execute select CONVERT(varchar(10),hdate,103)as hdate from tbl_history it works fine.it gives output like 12/06/2013select distinct m.mcidno, CONVERT(VARCHAR(10),h.hdate,103)as hdatefrom Tbl_Machine m inner join Tbl_History hon m.mcidno=h.mcidno It works fineafter giving where conditionEx:exec Sp_test1 '06/05/2013', '20/06/2013' it shows error like Arithmetic overflow error converting expression to data type datetimeplease solve this query.. 解决方案 Use This convert(datetime, @date1, 103) if you are using SQL SERVERLike in you case something likereate proc Sp_test1 @date1 nvarchar(50), @date2 nvarchar(50)as select distinct m.mcidno,convert(datetime,h.hdate, 103) as hdate from Tbl_Machine m inner join Tbl_History h on m.mcidno=h.mcidno where h.hdate between convert(datetime,@date1, 103) and convert(datetime,@date2, 103)Are you sure the culture details are correct within SQL?If the date format for the culture is wrong then it could be trying to find the 20th month of the year.Try writing your params like this '20 Jun 2013' and see if you still get the problem.Hi Dear Please change your 103 conversion Code to 120 , and increase varchar(10) to 20as like this example :select CONVERT(VARCHAR(19),GETDATE(),120) 这篇关于**请解决此SQL查询。面对将表达式转换为数据类型datetime的错误。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
11-01 13:38