2010-04-07 7 views
5

Est-il possible de tromper SQL Server pour renvoyer une date différente sur GetDate() sans réellement modifier la date de l'ordinateur?
Ce serait génial, car nous avons une base de données avec des données anciennes et j'essaie de tester certaines requêtes qui utilisent getdate().
Je peux changer la date de mon ordinateur mais cela pose d'autres problèmes avec d'autres applications ...
Des conseils?
Merci!Modification de la sortie de Getdate

Répondre

8

Selon le documentation for getdate():

Cette valeur est dérivée du système d'exploitation de l'ordinateur sur lequel l'instance de SQL Server est cours d'exécution.

Comme il est dérivé de l'OS, je ne pense pas que vous pouvez le changer séparément.

4

Vous pouvez toujours ajouter GetDate() dans une fonction personnalisée et l'utiliser partout, bien que ce ne soit pas une solution optimale.

+0

comment pouvez-vous faire? même si vous créez un UDF, ce serait 'dbo.GETDATE()' –

+1

@KM: Vous modifieriez l'implémentation de la fonction afin de pouvoir la modifier partout en modifiant un emplacement. @Klausbyskov: Si je ne me trompe pas, vous ne pouvez pas avoir une fonction non-déterministe comme GetDate dans un UDF. – JoshBerke

+0

KM est correct, il ne sera alors utilisé qu'en spécifiant dbo.getdate(), il ne remplace pas/remplace la fonction intégrée. – Andrew

1

Non, il n'y a pas grand chose que vous pouvez faire autre que quelque chose comme ceci:

SELECT GETDATE()-7 --get date time 7 days ago 
0
select dateadd(dd, -7 getdate()) 
+0

Eh bien, et comment il va aider à exécuter de nombreux scripts avec getdate() sans les changer, pour les tester par rapport aux données dans le passé? – Artemix

Questions connexes