我是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.
日期格式如下YYYMMDD
df['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/

10-12 12:43