Asier Marqués

Hablando sobre tecnologías web y otras cosas que me interesan
Archivado como Bases de Datos, Desarrollo, Desarrollo Web, Sistemas

Cuando manejamos tipos de datos datetime y smalldatetime, a menudo es necesaria hacer una cambio de formato de fecha al resultado obtenido de la base de datos.

En Sql Server podemos usar la función CONVERT para hacer dichas conversiones directamente en la consulta transact-sql, ahorrándonos trabajo en la lógica de aplicación.

La sintáxis para dicha función es el siguiente:

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

Un ejemplo aplicado sería:

CONVERT(varchar(11), campo_fecha, 112) as fecha

Esto nos convertiría el valor de un campo_fecha del tipo datetime a tipo varchar con un formato ISO (por ejemplo 081231), y le asigna un alias fecha.

Lo que sigue es una tabla de códigos con las distintas opciones de formato para las fechas.

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.

1 Estos valores de estilo devuelven resultados no deterministas. Incluye todos los estilos (aa) (sin el siglo) y un subconjunto de estilos (aaaa) (con el siglo).

2 Los valores predeterminados (style 0 o 100, 9 o 109, 13 o 113, 20 o 120 y 21 o 121) siempre devuelven el siglo (aaaa).

3 Entrada cuando se convierte en datetime; salida cuando se convierte en datos de caracteres.

4 Diseñado para usarse con XML. Para convertir datos datetime o smalldatetime en datos de caracteres, el formato de salida es el descrito en la tabla anterior.

5 Hijri es un sistema de calendario con varias variaciones. SQL Server 2005 usa el algoritmo Kuwaiti.

Enlace a la documentación oficial

Publicado por Asier Marqués el Miércoles, 25 de Junio del 2008


Puedes seguir los comentarios de ésta entrada via "RSS 2.0" y dejar un trackback desde tu sitio.

Una respuesta to “Usando CONVERT para tratar fechas en una consulta tSQL”

Añade un comentario