2010-04-07 13 views
5

¿Es posible engañar a SQL Server para que devuelva una fecha diferente en GetDate() sin cambiar realmente la fecha de la máquina?
Esto sería genial, ya que tenemos una base de datos con datos antiguos y estoy tratando de probar algunas consultas que usan getdate().
Puedo cambiar la fecha de mi máquina, pero eso trae algunos otros problemas con otras aplicaciones ...
¿Algún consejo?
Gracias!Cambiar la salida de Getdate

Respuesta

8

Según la documentation for getdate():

Este valor se deriva del sistema operativo del ordenador en el que la instancia de SQL Server es ejecución.

Dado que se deriva del sistema operativo, no creo que pueda cambiarlo por separado.

4

Siempre puede ajustar GetDate() en una función personalizada y usar eso en todas partes, aunque no es una solución óptima.

+0

¿cómo se puede hacer eso? incluso si crea una UDF sería 'dbo.GETDATE()' –

+1

@KM: cambiaría la implementación de la función para que pueda cambiarla en cualquier lugar modificando un lugar. @Klausbyskov: Si no me equivoco, no puede tener una función no determinista como GetDate en una UDF. – JoshBerke

+0

KM es correcto, solo se usaría especificando dbo.getdate(), no anula/reemplaza la función incorporada. – Andrew

1

No, no hay mucho que se pueda hacer otra cosa que algo como esto:

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

Bueno, y cómo lo hará ¿Ayuda a ejecutar muchos scripts con getdate() sin cambiarlos, para probarlos contra datos en el pasado? – Artemix

Cuestiones relacionadas