获取最近一年的记录

3zwtqj6y  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(408)

我正在尝试从SQLServer数据库中获取最近一年的记录。
例如,今天是2020年5月28日,那么它应该从2019年5月1日获取记录。但数据库中的日期列存储为整数。
我尝试了以下查询,但不起作用,

SELECT Ft.EmpCode, Ft.YMD 
FROM DADAILYF AS Ft
WHERE Ft.YMD BETWEEN CONVERT(varchar(19), GETDATE(), 112) - INTERVAL 1 YEAR 
                 AND CONVERT(varchar(19), GETDATE(), 112);

请帮帮我。

cedebl8k

cedebl8k1#

例如,今天是2020年5月28日,那么它应该从2019年5月1日获取记录
您将日期存储为整数,如 YYYYMMDD . 你可以这样使用算术:

where ymd >= (year(getdate()) - 1) * 10000 + month(getdate()) * 100 + 1

计算结果给出了当前月份的开始日期,即年前的n个整数(即20190501)。
如果你想要一个上限(比如,直到今天包括在内),那么:

where ymd
    between (year(getdate()) - 1) * 10000 + month(getdate()) * 100 + 1
    and year(getdate()) * 10000 + month(getdate()) * 100 + day(getdate())
rslzwgfq

rslzwgfq2#

另一个选择是 format() . 注意 MM01') - 10000 例子

Select *
 From  Yourtable
  Where YMD between format(getdate(),'yyyyMM01') - 10000 
                and format(getdate(),'yyyyMMdd')

退货

YMD
20200515

相关问题