2010-04-07 24 views
5

Czy można oszukać SQL Server, aby zwrócić inną datę na GetDate() bez faktycznej zmiany daty urządzenia?
Byłoby świetnie, ponieważ mamy bazę danych ze starymi danymi i próbuję przetestować niektóre zapytania używające getdate().
Mogę zmienić datę mojej maszyny, ale przynosi to inne problemy z innymi aplikacjami ...
Jakieś wskazówki?
Dzięki!Zmiana danych wyjściowych Getdate

Odpowiedz

8

Według documentation for getdate():

Wartość ta pochodzi z systemu operacyjnego komputera, na których wystąpienie SQL Server jest uruchomiony.

Ponieważ nie pochodzi z systemu operacyjnego, nie sądzę, że można go zmienić osobno.

4

Zawsze można zawinąć GetDate() w niestandardowej funkcji i używać go wszędzie, chociaż nie jest to optymalne rozwiązanie.

+0

w jaki sposób można to zrobić? nawet jeśli utworzysz UDF, będzie to 'dbo.GETDATE()' –

+1

@KM: Zmieniłbyś implementację funkcji, abyś mógł ją zmienić wszędzie, modyfikując jedno miejsce. @Klausbyskov: Jeśli się nie mylę, nie możesz mieć funkcji niedeterministycznej, takiej jak GetDate w UDF. – JoshBerke

+0

KM jest poprawny, może być użyty tylko przez podanie dbo.getdate(), nie zastępuje/nie zastępuje wbudowanej funkcji. – Andrew

1

Nie, nie ma wiele można zrobić inny niż coś takiego:

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

No i jak to będzie pomóc w uruchamianiu wielu skryptów za pomocą getdate() bez ich zmieniania, aby przetestować je na danych w przeszłości? – Artemix

Powiązane problemy