Funciones integradas de Transact SQL (I)

    SQL Server pone a nuestra disposición multitud de funciones predefinidas que proporcionan un amplio abanico de posibilidades. Mostramos aqui algunas de las frecuentes. Podemos acceder al listado completo a través del siguiente enlace: http://technet.microsoft.com/es-es/library/ms187786.aspx

Cast y Convert

    Convierten una expresión de un tipo de datos en otro de forma explícita. CAST y CONVERT proporcionan funciones similares.

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

    Donde:

  • data_type, es el tipo de destino al que queremos convertir la expresion
  • expresion, la expresion que queremos convertir
  • style, parametro opcional que especifica el formato que tiene expresion. Por ejemplo, si queremos convertir un varchar a datetime, aqui debemos especificar el formato de la fecha (el tipo varchar).

 

DECLARE @fecha varchar(20)

-- Convertimos un valor varchar a datetime

-- El 103 indica el formato en el que esta escrita la fecha

-- 103 => dd/mm/aa

SET @fecha = CONVERT(datetime, '19/03/2008',103)

 

SELECT @fecha

 

DECLARE @fecha datetime,

@fechaFormateada varchar(20)

-- Convertimos ahora una fecha a varchar y la formateamos

-- 3 => dd/mm/aa

SET @fecha = GETDATE()

SET @fechaFormateada = CONVERT(varchar(20), @fecha, 3)

 

SELECT @fechaFormateada

 

-- Un ejemplo utilizando CAST

DECLARE @dato varchar(2),

@dato2 int

SET @dato = '27'

SET @dato2 = cast(@dato AS int)

 

SELECT @dato2

    A continuación mostramos la tabla de códigos de estilo (obtenida de MicroSoft).

Sin el siglo (aa) (1) Con el siglo ?(aaaa) Estándar Entrada/salida (3)

-

0 o 100 (1, 2)

Valor predeterminado

mes dd aaaa hh:mia.m. (o p. m.)

1

101

EE.UU.

mm/dd/aaaa

2

102

ANSI

aa.mm.dd

3

103

Británico/Francés

dd/mm/aa

4

104

Alemán

dd.mm.aa

5

105

Italiano

dd-mm-aa

6

106 (1)

-

dd mes aa

7

107 (1)

-

Mes dd, aa

8

108

-

hh:mi:ss

-

9 o 109 (1, 2)

Valor predeterminado + milisegundos

mes dd aaaa hh:mi:ss:mmma.m. (o p. m.)

10

110

EE.UU.

mm-dd-aa

11

111

JAPÓN

aa/mm/dd

12

112

ISO

aammdd

-

13 o 113 (1, 2)

Europeo predeterminado + milisegundos

dd mes aaaa hh:mi:ss:mmm(24h)

14

114

-

hh:mi:ss:mmm(24h)

-

20 o 120 (2)

ODBC canónico

aaaa-mm-dd hh:mi:ss(24h)

-

21 o 121 (2)

ODBC canónico (con milisegundos)

aaaa-mm-dd hh:mi:ss.mmm(24h)

-

126 (4)

ISO8601

aaaa-mm-ddThh:mi:ss.mmm (sin espacios)

127(6, 7)

ISO8601 con zona horaria Z.

aaaa-mm-ddThh:mi:ss.mmmZ

(sin espacios)

-

130 (1, 2)

Hijri (5)

dd mes aaaa hh:mi:ss:mmma.m.

-

131 (2)

Hijri (5)

dd/mm/aa hh:mi:ss:mmma.m.

Isnull

    Evalua una expresion de entrado y si esta es NULL, reemplaza NULL con el valor de reemplazo especificado. El valor de reemplazo debe ser del mismo tipo de datos que la expresion a evaluar.

ISNULL ( expression , replacement_value )

 

DECLARE @datoInt int,

@datoVarchar varchar(100)

 

SET @datoInt = NULL

SET @datoVarchar = NULL

 

SELECT ISNULL(@dato, -1),

ISNULL(@datoVarchar, 'No hay dato')

COALESCE

    Devuelve la primera expresión distinta de NULL entre sus argumentos. Un aspecto a tener en cuenta es que todos los argumentos deben ser del mismo tipo.

COALESCE ( expression [ ,...n ] )

 

DECLARE @dato1 int,

@dato2 int,

@dato3 int,

@dato4 int,

@dato5 int

 

SET @dato1 = null

SET @dato2 = NULL

SET @dato3 = NULL

SET @dato4 = 100

SET @dato5 = 125

 

-- Devuelve 100

SELECT COALESCE(@dato1,@dato2,@dato3,@dato4,@dato5)

GetDate y GetUTCDate

    GetDate devuelve la fecha y hora actuales del sistema en el formato interno estándar de SQL Server 2005 para los valores datetime.

    GetUTCDate devuelve el valor datetime que representa la hora UTC (hora universal coordinada u hora del meridiano de Greenwich) actual.

 

DECLARE @fechaLocal datetime,

@fechaUTC datetime

 

SET @fechaLocal = getdate()

SET @fechaUTC = GETUTCDATE()

 

SELECT @fechaLocal, @fechaUTC

 

Pedro  Herrarte  Sánchez
Funciones integradas de Transact SQL (I)
Pedro Herrarte Sánchez

Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación. Posee mas de diez años de experiencia trabajando para las principales empresas de España. Es especialista en tecnologías .NET, entornos Web (ASP.NET, ASP.NET MVC,jQuery, HTML5), bases de datos (SQL Server y ORACLE) e integración de sistemas. Es experto en desarrollo (C#, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE). Pedro es MCP y MAP 2012, es fundador, diseñador y programador de www.devjoker.com..
Fecha de alta:20/03/2008
Última actualizacion:20/03/2008
Visitas totales:66547
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com