2009-04-09 3 views
1

Je suis en train de créer une clause WHERE qui ditgarniture deux premiers caractères de l'année de GETDATE()

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

Fondamentalement column_1 contient l'exercice, mais l'exercice est dans la base de données 8 ou 9 non 2008 ou 2009.

Donc, je dois trouver un moyen de couper au moins le '20' de sorte que la requête fonctionnera correctement ... Le plus dynamique le mieux parce que je dois configurer cela pour exécuter dans un paquet SSIS et le codage moins difficile le mieux.

Des suggestions? Merci d'avance! Jon

Répondre

1

selon le type de données du column_1

impression droite (datepart (année, getdate()), 2) --string avec le premier converti d'impression zéro (int, droit (datepart (année, getdate()), 2)) - int

EDIT

basé sur @ réponse de Richard
impression datepart (année, getdate())% 100

+0

Tu m'as battu! Hey Jon, ce que Mike a dit! : P – SirDemon

6

Plutôt que de couper, module d'utilisation:

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

J'aime l'idée de% 100, mais ce n'est pas T-SQL et ne fonctionnera pas dans un serveur sql où la clause –

+0

@mike: Ceci est parfaitement valide T-SQL. – Tomalak

+0

"==" ne fonctionne pas sur mon serveur sql –

0

est pas là un format de conversion qui n'imprimera les 2 derniers chiffres de l'année?

0

Si votre colonne est garantie pour faire référence aux années> = 2000 et < 2100, alors vous vous en sortir avec l'assez évident:

SELECT YEAR(GETDATE()) - 2000 

Mais ... Honnêtement, ça me ferait pleurer de voir un tel code dans un environnement de production. C'est juste un peu trop WTF, imo.

Questions connexes