2009-04-09 3 views
1

Я пытаюсь создать ИНЕКЕ, который говоритдифферента первые два символа из года GETDATE()

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

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

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

Любые предложения? Спасибо заранее! Jon

ответ

1

в зависимости от типа данных в column_1

печать право (DATEPART (год, GETDATE()), 2) --string с ведущего нуля печати обращенного (INT, правый (DatePart (год, GETDATE()), 2)) - INT

EDIT

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

+0

Ты избил меня! Эй, Джон, что сказал майк! : P – SirDemon

6

Вместо отделки, использование модуля:

... 
WHERE column_1 = (YEAR(GETDATE()) % 100) 
+0

Мне нравится идея% 100, но это не T-SQL и не будет работать на SQL-сервере, где статья –

+0

@mike: Это совершенно корректный T-SQL. – Tomalak

+0

«==» не работает на моем сервере sql –

0

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

0

Если столбец гарантируется для обозначения лет> = 2000 и < 2100, то вы бы уйти с довольно очевидно:

SELECT YEAR(GETDATE()) - 2000 

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

Смежные вопросы