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 intSET @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 = NULLSET @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 = nullSET @dato2 = NULLSET @dato3 = NULLSET @dato4 = 100SET @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
|