miércoles, 17 de febrero de 2010

Funciones integradas de Transact SQL

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 quequeremos 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

No hay comentarios:

Publicar un comentario