Вы находитесь на странице: 1из 4

12/11/13

SQL Server: Problemas con fechas y horas. Trabajar con este tipo de datos en SQL Server

SQL Server: resolucin de los problemas ms habituales planteados por los usuarios en el grupo de noticias microsoft.public.es.sqlserver.
Tu re vista sobre .NET

Pincha aqu para ver todos los problemas habituales


SQL Server Administracion
C arac ters tic as I ns talac in A rquitec tura Bas es de D atos D T S / SSI S XM L / Servic ios Web Full T ext Searc h Bac kup / Res tore Seguridad T areas adminis trativas Rendimiento Replic ac in

Problemas con fechas y horas. Trabajar con este tipo de datos en SQL Server.

Introduccin.

Implementacin SQL Server tiene los tipos de datos datetime y smalldatetime para C ons ultas almacenar datos de fecha y hora.
Stored P roc edures T riggers O L A P - D atawarehous e

Otros
N ovedades FA Q 's SQ L Server L ibros E nlac es (links )

No hay tipos de datos diferentes de hora y fecha para almacenar slo horas o slo fechas. Si slo se especifica una hora cuando se establece un valor datetime o smalldatetime, el valor predeterminado de la fecha es el 1 de enero de 1900. Si slo se especifica una fecha, la hora ser, de forma predeterminada, 12:00 a.m. (medianoche), es decir, las 00:00.

SolidQ
Web de SolidQ (E s paa) Web de SolidQ (G lobal) C urs os de SolidQ (SQ L Server, BI , ShareP oint, ...) SolidQ es pec ializada en SQ L Server) N ues tro equipo SolidQ Summit SolidQ (C onferenc ia es paola) Blogs de SolidQ

Tipo de datos Datetime. Datos de fecha y hora comprendidos entre el 1 de enero de 1753 y el 31 de diciembre de 9999, con una precisin de un trescientosavo de segundo, o 3,33 milisegundos.

SQL Server rechaza todos los valores que no puede reconocer como fechas entre 1753 y 9999. J ournal (Revis ta Tipo de datos Smalldatetime. Datos de fecha y hora desde el 1 de enero de 1900 al 6 de junio de 2079, con precisin de minutos. Entonces si se utiliza un valor smalldatetime los segundos y milisegundos son siempre 0.

SolidQ
Web de SolidQ (E s paa) Web de SolidQ (G lobal) C urs os de SolidQ (SQ L Server, BI , ShareP oint, ...) SolidQ J ournal (Revis ta es pec ializada en SQ L Server) N ues tro equipo SolidQ

Diferencia entre Datetime y Smalldatetime. SQL Server almacena internamente los valores de tipo de datos datetime como enteros de 4 bytes y los valores smalldatetime como enteros de 2 bytes.

Funciones de fecha y hora (Transact-SQL) Estas funciones escalares realizan una operacin sobre un valor de
1/4

www.helpdna.net/sqlserver_faq_05_fechas_horas.htm

12/11/13
Summit SolidQ (C onferenc ia es paola) Blogs de SolidQ

SQL Server: Problemas con fechas y horas. Trabajar con este tipo de datos en SQL Server

fecha y hora de entrada, y devuelven un valor de cadena, numrico o de fecha y hora: DATEADD DATEDIFF DATENAME DATEPART GETDATE DAY MONTH YEAR

Trabajando con fechas ... Con algunos pequeos ejemplos trataremos de resolver los mayores problemas para trabajar con estos tipos de datos. Para ello utilizaremos las funciones CAST y CONVERT.

Separando Fecha y Hora. D e c l a r e@ F e c h ad a t e t i m e S e t@ F e c h a=G e t d a t e ( ) S e l e c tC o n v e r t ( C h a r ( 1 0 ) ,@ F e c h a , 1 1 2 )A s S o l o F e c h a ,C o n v e r t ( C h a r ( 8 ) ,@ F e c h a ,1 0 8 ) A sS o l o H o r a S o l o F e c h aS o l o H o r a -2 0 0 1 0 8 0 30 7 : 3 5 : 0 2 ( 1r o w ( s )a f f e c t e d ) Otra forma de conseguir el mismo resultado: D e c l a r e@ F e c h ad a t e t i m e S e t@ F e c h a=G e t d a t e ( ) S E L E C TC o n v e r t ( v a r c h a r ,@ F e c h a ,3 )A S S o l o F e c h a ,C o n v e r t ( v a r c h a r ,@ F e c h a ,8 ) Operaciones con Fechas (diferencia entre dos fechas). Obtener diferencia de meses, dias, minutos, etc. entre dos fechas. Para realizar operaciones entre dos fechas MSSQL tiene la funcin DATEDIFF. Veamos algunos ejemplos de cmo utilizarla: d e c l a r e@ F e c h a I n g r e s od a t e t i m e d e c l a r e@ F e c h a E g r e s od a t e t i m e s e l e c t@ F e c h a I n g r e s o=' 1 9 9 8 1 2 3 11 5 : 1 5 ' s e l e c t@ F e c h a E g r e s o=' 2 0 0 2 1 0 0 51 0 : 1 0 ' S e l e c t D A T E D I F F ( d d ,@ F e c h a I n g r e s o ,@ F e c h a E g r e s o ) A SD i a s , D A T E D I F F ( m m ,@ F e c h a I n g r e s o ,@ F e c h a E g r e s o ) A SM e s e s , D A T E D I F F ( m i ,@ F e c h a I n g r e s o ,@ F e c h a E g r e s o ) A SM i n u t o s
www.helpdna.net/sqlserver_faq_05_fechas_horas.htm 2/4

12/11/13

SQL Server: Problemas con fechas y horas. Trabajar con este tipo de datos en SQL Server

Para obtener otras diferencias podemos recurrir a la siguiente tabla: Parte de la fecha ao trimestre mes dia semana hora minuto segundo Abreviaturas aa, aaaa tt, t mm, m dd, d sm, ss hh mi, n ss, s

dia del ao da, a

milisegundo Ms

Otro ejemplo de DATEDIFF en donde recuperados los datos de la ultima semana partiendo de la fecha del da: S E L E C TT u s D a t o s F R O MT u T a b l a W H E R E D A T E D I F F ( d d ,T u F e c h a ,G e t D a t e ( ) )< =7 Continuando con las operaciones con las fechas, veamos como podemos hacer para sumar, restar, das, minutos, meses, a una fecha, para ello utilizamos la funcin DATEADD: s e l e c tc o n v e r t ( v a r c h a r ( 1 2 ) ,D A T E A D D ( m o n t h , 1 ,g e t d a t e ( ) ) ,1 0 6 ) a s' u nm e sa t r s ' s e l e c tc o n v e r t ( v a r c h a r ( 1 2 ) ,D A T E A D D( w e e k , 1 ,g e t d a t e ( ) ) ,1 0 6 ) a s' u n as e m a n aa t r s ' s e l e c tc o n v e r t ( v a r c h a r ( 1 2 ) ,D A T E A D D( d a y , 1 ,g e t d a t e ( ) ) ,1 0 6 )a s' a y e r ' Sugerencia: Estos ejemplos que mostramos a continuacin devolveran el mismo resultados que las consultas anteriores, pero, si, siempre hay un pero.... hace un tiempo nuestro compaero Fernando Guerrero me sugiri no utilizarlo pues este truco no est soportado oficialmente por SQL Server ni por el estndar ANSI. s e l e c tc o n v e r t ( v a r c h a r ( 1 2 ) ,g e t d a t e ( ) 7 ) , 1 0 6 )a s' u n as e m a n aa t r s ' s e l e c tc o n v e r t ( v a r c h a r ( 1 2 ) ,g e t d a t e ( ) 1 ) , 1 0 6 )a s' A y e r '

www.helpdna.net/sqlserver_faq_05_fechas_horas.htm

3/4

12/11/13

SQL Server: Problemas con fechas y horas. Trabajar con este tipo de datos en SQL Server

Funciona, pero no sabemos hasta cuando.

Ampliar informacin: Puede consultar en los B.O.L. (Books OnLine - Libros en Pantalla) cualquiera de las instrucciones citadas anteriormente. Tambin puede consultar los artculos y ejemplos publicados en http://www.portalsql.com All busque la palabra 'fechas' y obtendr todos los artculos publicados sobre el tema. Y el artculo de la revista MTJ: Cmo manejar fechas en SQL Server ? Los blogs de SolidQ de SQL Server: El rincn del DBA.

Para cualquier tipo de sugerencia, colaboracin o comunicacin, dirjanse a webmaster@helpdna.net

www.helpdna.net/sqlserver_faq_05_fechas_horas.htm

4/4

Вам также может понравиться