Ayuda con una View

18/05/2006 - 12:27 por Farners | Informe spam
Hola a todos,
Estoy liada con una cosa super tonta que no consigo resolver.
He creado una vista con un campo de fecha que me muestra también la hora. Me
gustaria que SOLO se visualizara la fecha, pero no encuentro la función
T-SQL que me permita hacer esto.
Alguien se acuerda??
Muchas gracias

Farners

Preguntas similare

Leer las respuestas

#1 Rubén Vigón
18/05/2006 - 13:02 | Informe spam
Hola Farners,

Como sabes, los tipos de datos «datetime» y «smalldatetime» almacenan internamente las fechas como números de coma flotante, donde la parte entera representa los días transcurridos desde una fecha base (el 1 de Enero de 1900 en SQL Server) y la parte decimal representa los segundos/milisegundos transcurridos desde la medianoche del día almacenado en la parte entera. Puedes aprovechar las características de este formato de almacenamiento para quedarte sólo con la parte de fecha, extrayendo la parte entera (despreciando la decimal) y conviertiéndola de nuevo a fecha; por ejemplo:

DECLARE @fch smalldatetime
SET @fch = GetDate()
SELECT @fch AS [Fecha y hora], CAST(CAST(@fch AS int) AS smalldatetime) AS [Sólo fecha]

Otra opción es usar «CONVERT»; por ejemplo:

SELECT CONVERT(smalldatetime, CONVERT(varchar, @campofechayhora, 103))

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Respuesta Responder a este mensaje
#2 Carlos Sacristán
18/05/2006 - 13:16 | Informe spam
Está la opción de Rubén, perfectamente válida, o bien puedes usar
DATEPART ( datepart , date ), lo cual te va a garantizar compatibilidad en
el futuro. Echa un vistazo en los BOL acerca de la sintaxis del uso de esta
función


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Farners" escribió en el mensaje
news:
Hola a todos,
Estoy liada con una cosa super tonta que no consigo resolver.
He creado una vista con un campo de fecha que me muestra también la hora.


Me
gustaria que SOLO se visualizara la fecha, pero no encuentro la función
T-SQL que me permita hacer esto.
Alguien se acuerda??
Muchas gracias

Farners


Respuesta Responder a este mensaje
#3 Miguel Egea
18/05/2006 - 13:22 | Informe spam
Solo una apreciación, si usas la versión "numérica", hay que tener mucho
cuidado con los redondeos, porque a partir de las 12:00 del medio día puede
cambiarte el día, y eso no esta muy bien :). Os pongo dos ejemplos uno que
fallaría convirtiendo a int y otro que no lo haría, y lo publico en
portalsql.com

create table #test (id int identity(1,1), fechahora datetime)

go

insert into #test values(getdate())

insert into #test values(dateadd(hh,-12,getdate()))

insert into #test values(dateadd(hh,+12,getdate()))

go

select cast(cast(fechahora as int) as datetime),fechahora from #test

select cast(floor(cast(fechahora as float)) as datetime),fechahora from
#test




Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar para
obtener soluciones y educación avanzada para la plataforma completa de
sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com


"Rubén Vigón" escribió en el mensaje
news:
Hola Farners,

Como sabes, los tipos de datos «datetime» y «smalldatetime» almacenan
internamente las fechas como números de coma flotante, donde la parte entera
representa los días transcurridos desde una fecha base (el 1 de Enero de
1900 en SQL Server) y la parte decimal representa los segundos/milisegundos
transcurridos desde la medianoche del día almacenado en la parte entera.
Puedes aprovechar las características de este formato de almacenamiento para
quedarte sólo con la parte de fecha, extrayendo la parte entera
(despreciando la decimal) y conviertiéndola de nuevo a fecha; por ejemplo:

DECLARE @fch smalldatetime
SET @fch = GetDate()
SELECT @fch AS [Fecha y hora], CAST(CAST(@fch AS int) AS smalldatetime) AS
[Sólo fecha]

Otra opción es usar «CONVERT»; por ejemplo:

SELECT CONVERT(smalldatetime, CONVERT(varchar, @campofechayhora, 103))

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Respuesta Responder a este mensaje
#4 Rubén Vigón
18/05/2006 - 13:29 | Informe spam
Excelente apreciación, Miguel. Me la anoto :-)

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Respuesta Responder a este mensaje
#5 Rubén Vigón
18/05/2006 - 13:38 | Informe spam
Hola Carlos!

Pensé en usar «DATEPART» pero no encontré ninguna opción (de las disponibles para el argumento «datepart»: year, quarter, month, dayofyear, day, week, weekday, hour, minute, second, millisecond) que nos sirva... ¿se me ha pasado alguna?

Muchas gracias de antemano

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida