Обрезать первые два символа из года GETDATE () - PullRequest
1 голос
/ 09 апреля 2009

Я пытаюсь создать предложение WHERE, которое говорит

WHERE column_1 = TRIM(LEADING '20' FROM(DATEPART(year, GETDATE())))

В основном column_1 содержит финансовый год, но финансовый год находится в базе данных как 8 или 9, а не 2008 или 2009.

Поэтому мне нужно найти способ обрезать хотя бы '20', чтобы запрос работал правильно ... Чем динамичнее, тем лучше, потому что мне нужно настроить его для запуска в pkg SSIS и тем меньше жесткое кодирование, тем лучше.

Есть предложения? Заранее спасибо! Jon

Ответы [ 4 ]

6 голосов
/ 09 апреля 2009

Вместо обрезки используйте модуль:

...
WHERE column_1 = (YEAR(GETDATE()) % 100)
1 голос
/ 09 апреля 2009

в зависимости от типа данных столбца_1

право печати (datepart (year, getdate ()), 2) - строка с нулем в начале print convert (int, right (datepart (year, getdate ()), 2)) - int

EDIT

на основе ответа @ Ричарда
печатать datepart (год, getdate ())% 100

0 голосов
/ 09 апреля 2009

Если ваш столбец гарантированно ссылается на годы> = 2000 и <2100, то вам будет достаточно очевидного: </p>

SELECT YEAR(GETDATE()) - 2000

Но ... Честно говоря, мне было бы грустно видеть такой код в производственной среде. Это просто слишком много WTF, IMO.

0 голосов
/ 09 апреля 2009

Не существует ли конвертированный формат, который будет печатать только последние 2 цифры года?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...