2009-04-22 5 views
0

J'ai une procédure qui par défaut date d'aujourd'hui si aucun paramètre n'y est passé.SQL Server 2005 Date Localisation

CREATE Procedure GetDirectoryRenewalReminders  
(@DateToday datetime = Null) 
As  
If @DateToday Is Null 
Begin 
Set @DateToday = GetDate() 
End 
... 
Go 

Comment puis-je faire en sorte que la valeur GetDate() par défaut à l'heure actuelle au Royaume-Uni lorsqu'il est appelé à partir d'une demande au Royaume-Uni, et un temps australien lorsqu'il est appelé à partir d'un applciation en Australie?

Répondre

3

Vous pouvez utiliser GETUTCDATE() pour l'heure dans utc à partir du serveur. Ensuite, vous pouvez demander au client d'ajouter l'heure locale à cela.

1

L'application cliente doit appliquer la traduction pour l'emplacement du client dans une date-heure standard pour SQL Server ... mais vous devez appliquer le décalage de fuseau horaire pour le rendre GMT dans le client.

Ensuite, comparez contre GETUTCDATE()

Pour votre information: GMT est UTC si vous êtes britannique ;-)

1

Il retournerez toujours le temps de serveur local. Le serveur de base de données ne peut pas savoir où se trouve l'utilisateur "dans le temps". Vous pouvez transmettre un décalage horaire à la procédure.