gpt4 book ai didi

SQL Server 算术溢出错误将表达式转换为数据类型日期时间

转载 作者:行者123 更新时间:2023-12-03 03:21:16 37 4
gpt4 key购买 nike

我想自定义我的订单,如果数量为负数,那么该行必须在拳头,然后如果数量为正数,我将按 ExpDate 排序

SELECT WhsCode,
ItemCode,
LotNumber,
ExpDate,
Qty
FROM rq_Test2
ORDER BY CASE
WHEN qty < 0 THEN Qty
ELSE ExpDate
END

但是我收到错误“将表达式转换为数据类型日期时间时出现算术溢出错误。”..为什么?

谢谢..

最佳答案

Select WhsCode,ItemCode,LotNumber,ExpDate,Qty 
from rq_Test2
order by case when qty < 0 then Qty else ExpDate end

case 语句中,编译器将尝试将 Qty(numeric value) 转换为 Expdate(datetime)

因为case语句会将所有result_expression转换为result_expression中优先级最高的数据类型。

在您的情况下,Datetime 的优先级高于numeric、int 或 Bigint 等。 所以您会收到该错误。

SQL Server 对数据类型使用以下优先级顺序:

user-defined data types (highest)
sql_varian t
xml
datetimeoffset
datetime2
datetime
smalldatetime
date
time
float
real
decimal
money
smallmoney
bigint
int
smallint
tinyint
bit
ntext
text
image
timestamp
uniqueidentifier
nvarchar (including nvarchar(max) )
nchar
varchar (including varchar(max) )
char
varbinary (including varbinary(max) )
binary (lowest)

关于SQL Server 算术溢出错误将表达式转换为数据类型日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29573774/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com