Usando CONVERT para tratar fechas en una consulta tSQL

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

Sobre Asier

Arquitecto web enganchado al desarrollo, estudio y planteamiento de proyectos en internet. Trabajo en Blackslot, empresa que fundé en el 2009. Me encanta el cine, el café, el sexo, la cultura geek, la cultura oriental y la música electrónica.
Artículo publicado en Bases de Datos, Desarrollo, Desarrollo Web, Sistemas. Enlace a esta entrada..

Una respuesta a Usando CONVERT para tratar fechas en una consulta tSQL

  1. Alberto de Tena dijo:

    Emmmmmmmm, no se puede usar una mascara personalizada?

    Anonadado me dejas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos requeridos, están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>