我是SQL新手。我正在尝试从过去4年中的表中提取数据,但出现以下错误
SELECT * FROM fact.ClaimDetail WHERE EobPrintDateCode > DATEADD(year,-4,GETDATE())
Msg 8115, Level 16, State 2, Line 30
Arithmetic overflow error converting expression to data type datetime.
日期格式如下YYYMMDDdf['EobPrintDateCode']
Out[89]:
0 20060113
1 20060113
2 20060113
3 20060113
4 20060113
选择查询之前是否需要将其转换为其他格式?请帮忙 最佳答案
如果您的日期代码是整数,则可以通过两步过程将其转换为日期:
SELECT *
FROM fact.ClaimDetail
WHERE TRY_CONVERT(date, TRY_CONVERT(VARCHAR(255), EobPrintDateCode)) > DATEADD(year,-4, GETDATE())
您也可以仅通过对GETDATE()
进行操作来对此表达短语。再次假设一个整数:WHERE EobPrintDateCode >= (YEAR(GETDATE()) - 4) * 10000 + MONTH(GETDATE()) * 100 + DAY(GETDATE())
因为要减去4年,所以即使对于arithmetic年,日期运算也是如此。关于sql - 最近n年挖掘数据时出现SQL算术溢出错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63037272/