Получите записи за последний год - PullRequest
0 голосов
/ 28 мая 2020
• 1000 Но столбец даты в моей базе данных хранится как целое число.

Я попытался выполнить следующий запрос, но он не работает:

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);

Пожалуйста, помогите мне с этим.

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Например, сегодня 28 мая 2020 г., тогда он должен получать записи за 1 мая 2019 г.

Вы храните даты как целые числа, например YYYYMMDD. Вы можете использовать такую ​​арифметику:

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

Вычисление дает вам начало текущего месяца в году a go в виде целого числа n (то есть 20190501).

Если вам нужна верхняя граница (скажем, до сегодняшнего дня), тогда:

where ymd
    between (year(getdate()) - 1) * 10000 + month(getdate()) * 100 + 1
    and year(getdate()) * 10000 + month(getdate()) * 100 + day(getdate())
0 голосов
/ 28 мая 2020

Другой вариант - format(). Обратите внимание на MM01') - 10000

Пример

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

Возвращает

YMD
20200515
...