挖掘过去n年的数据时发生sql算术溢出错误

at0kjp5o  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(393)

我是sql新手。我试图从一个表中提取过去4年的数据,但我得到以下错误

  1. SELECT * FROM fact.ClaimDetail WHERE EobPrintDateCode > DATEADD(year,-4,GETDATE())
  2. Msg 8115, Level 16, State 2, Line 30
  3. Arithmetic overflow error converting expression to data type datetime.

日期格式如下YYMMDD

  1. df['EobPrintDateCode']
  2. Out[89]:
  3. 0 20060113
  4. 1 20060113
  5. 2 20060113
  6. 3 20060113
  7. 4 20060113

在执行select查询之前,是否需要将其转换为其他格式?请帮忙

i2loujxw

i2loujxw1#

如果日期代码是整数,则可以通过两个步骤将其转换为日期:

  1. SELECT *
  2. FROM fact.ClaimDetail
  3. WHERE TRY_CONVERT(date, TRY_CONVERT(VARCHAR(255), EobPrintDateCode)) > DATEADD(year,-4, GETDATE())

您也可以使用仅对 GETDATE() . 再次假设一个整数:

  1. WHERE EobPrintDateCode >= (YEAR(GETDATE()) - 4) * 10000 + MONTH(GETDATE()) * 100 + DAY(GETDATE())

因为你要减去4年,所以即使是闰年,日期算法也是这样。

uubf1zoe

uubf1zoe2#

可以使用cast将值转换为日期

  1. SELECT *
  2. FROM fact.ClaimDetail
  3. WHERE cast(cast(EobPrintDateCode AS varchar(8)) AS date) > DATEADD(year,-4, GETDATE())
kzipqqlq

kzipqqlq3#

  1. SELECT *
  2. FROM fact.ClaimDetail
  3. WHERE year(EobPrintDateCode) > year(getdate())-4;

相关问题