Simular TRUNC en SQL Server
TRUNC es una funcion de PL/SQL muy popular en el mundo ORACLE, recibe una fecha con hora y la devuelve truncada a las 00:00:00.Es decir si se pasa como parametro 25/08/2009 19:45:23 devuelve 25/08/2009 00:00:00.
Personalmente me parece una función extremadamente util - por ejemplo para obtener los registros correspondientes a un dia concreto o rango de fechas- , pero que inexplicablemente SQL Server no incorpora de forma nativa esta función, aunque el problema se mitiga gracias a los nuevos tipos de datos de SQL Server 2008 para fechas.
Por supuesto no es dificil obtener realizar este tipo de consultas. Normalmente los programadores recurren a las funciones CAST y CONVERT para realizar este tipo de consultas. Esta forma de trabajar es propensa a errores, sobre todo de localizacion, por no hablar de aquellos que confian en la coversion implicita ... Yo siempre recomiendo trabajar de forma tipada - es decir con variables datetime.
Para conseguir el mismo resultado que nos da la funcion TRUNC podemos utilizar este simple script, donde convertimos la fecha - en este caso getdate() - al tipo varchar(10) para truncar el resto de caracteres (el tiempo), posteriormente volvemos a convertir a fecha para obtener una nueva fecha.
|
Pero como hemos dicho la recomendacion es trabajar siempre de forma tipada, por lo que podemes crear una funcion UDF.
CREATE FUNCTION dbo.trunc (@input datetime) |
CREATE TABLE FechaSample |
id fecha_alta
--- -----------------------
1 2009-10-06 12:21:45.587
2 2009-10-06 12:21:45.587
3 2009-10-06 12:21:45.587
4 2009-10-06 12:21:45.587
5 2009-10-06 12:21:45.587
6 2009-10-06 12:21:45.587
7 2009-10-06 12:21:45.587
8 2009-10-06 12:21:45.587
9 2009-10-06 12:21:45.587
10 2009-10-06 12:21:45.587
(10 row(s) affected)
No hay comentarios.:
Publicar un comentario