Я использую SSMS / SSRS2012, работая над отчетом, чтобы зафиксировать все часы, отработанные в текущем финансовом году, который для этой цели длится с 1 октября по 30 сентября. говорит следующее: если текущий месяц <10 (октябрь), то @FYStart = прошлый год, если текущий месяц> = 10, тогда @FYStart = текущий год
Когда я запрашиваю SELECT GETDATE()
, вот формат: 2020-06-16 15:24:57.637
Я пробовал следующее, но работает только половина.
SELECT CASE WHEN DATEPART(MONTH,(CAST(getdate() AS INT)))>09
THEN YEAR(CAST(getdate() AS INT))
ELSE DATEADD(YEAR,-1,(CAST(getdate() AS INT)))
END
Результат дает мне 2019-06-17 00:00:00.000
, что является шагом в правильном направлении, но если я изменю месяц на месяц, который уже прошел,
SELECT CASE WHEN DATEPART(MONTH,(CAST(getdate() AS INT)))>03
THEN YEAR(CAST(getdate() AS INT))
ELSE DATEADD(YEAR,-1,(CAST(getdate() AS INT)))
END
Я получаю такой результат: 1905-07-14 00:00:00.000
Очевидно, здесь что-то не так, но я не уверен, что именно. Я думаю, что это что-то с типами данных, но я не уверен, что проверить / с чего начать.