2010-04-07 4 views
5

È possibile ingannare SQL Server per restituire una data diversa su GetDate() senza effettivamente modificare la data della macchina?
Sarebbe fantastico, dato che abbiamo un database con vecchi dati e sto provando a testare alcune query che usano getdate().
Posso cambiare la data della mia macchina ma questo porta altri problemi con altre applicazioni ...
Qualche consiglio?
Grazie!Modifica dell'output di Getdate

risposta

8

Secondo il documentation for getdate():

Questo valore è derivato dal sistema operativo del computer sul cui l'istanza di SQL Server è esecuzione.

Poiché è derivato dal sistema operativo, non penso che sia possibile modificarlo separatamente.

4

È sempre possibile avvolgere GetDate() in una funzione personalizzata e utilizzarlo ovunque, sebbene non sia una soluzione ottimale.

+0

come si può fare questo? anche se si crea un UDF, sarebbe 'dbo.GETDATE()' –

+1

@KM: si cambierebbe l'implementazione della funzione in modo da poterla modificare ovunque modificando un luogo. @Klausbyskov: Se non sbaglio non è possibile avere una funzione non deterministica come GetDate in una UDF. – JoshBerke

+0

KM è corretto, verrà utilizzato solo specificando dbo.getdate(), non sovrascrive/sostituisce la funzione incorporata. – Andrew

1

No, non c'è molto che si può fare altro che qualcosa di simile:

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

Bene, e come sarà aiuta a eseguire molti script con getdate() senza modificarli, per testarli rispetto ai dati in passato? – Artemix