2009-01-14 7 views
0

T-SQL:Équivalent? Non mais pourquoi?

1 (ANSI): convert(varchar(10),@DueDate, 102) < convert(varchar(10),getdate(), 102)

2 (USA): convert(varchar(10),@DueDate, 101) < convert(varchar(10),getdate(), 101)

Notez que ceux-ci reviendront des résultats différents lorsque l'année est considérée.

Pourquoi?

Quelle est la différence? Pourquoi l'opérateur ne prend-il pas l'année en considération en utilisant # 2?

Répondre

4

Qu'est-ce que vous essayez de faire? Vous comparez varchars, là. Regardez la sortie de ces déclarations:

print convert(varchar(10), getdate(), 101) 
print convert(varchar(10), getdate(), 102) 

qui imprime ceci:

01/14/2009 
2009.01.14 

En comparant la première forme est seulement vraiment va être vérifier pour voir si le mois d'une date de moins que le mois de la date actuelle.

Y a-t-il une raison pour laquelle vous devez convertir les dates en varchar? Pourquoi ne pas les comparer directement?

@DueDate < getdate() 
Questions connexes