sql >> Base de Datos >  >> RDS >> Sqlserver

CONVERT() de fecha/hora a ejemplos de cadena en SQL Server

El CONVERT() La función le permite convertir entre tipos de datos. Es similar al CAST() función, pero uno de los beneficios de CONVERT() es que, cuando convierte un tipo de datos de fecha/hora a una cadena, puede agregar un argumento opcional que especifica el estilo en el que desea que esté el valor de retorno. Por ejemplo, puede devolverlo como dd .mm.aaaa , aaaa-mm-dd , dd mes aaaa , etc.

Este artículo contiene ejemplos de varios estilos que puede devolver al convertir un valor de fecha/hora en una cadena usando CONVERT() función en SQL Server.

Ejemplo básico

El estilo predeterminado al convertir desde fecha y hora y pequeña fecha y hora tipos de datos es 0 y 100 (estos representan el mismo estilo). Por lo tanto, cuando no proporciona un estilo (tercer parámetro), así es como se diseña:

DECLARE @date datetime = GETDATE();
SELECT
    @date AS Original,
    CONVERT(varchar, @date) AS Converted;

Resultado:

+-------------------------+---------------------+
| Original                | Converted           |
|-------------------------+---------------------|
| 2018-06-07 03:08:21.997 | Jun  7 2018  3:08AM |
+-------------------------+---------------------+

Sin embargo, obtendrá un resultado diferente si el tipo de datos original no es datetimepequeña fecha y hora .

Si necesita que se devuelva en un estilo diferente, deberá especificar un tercer argumento.

Estilos con años de dos dígitos

A continuación se muestran ejemplos de los distintos valores que puede utilizar para especificar el estilo utilizando un componente de año de dos dígitos.

Estilos 1 a 6

DECLARE @date datetime2 = '2018-06-07';
SELECT
    CONVERT(nvarchar(30), @date, 1) AS '1',
    CONVERT(nvarchar(30), @date, 2) AS '2',
    CONVERT(nvarchar(30), @date, 3) AS '3',
    CONVERT(nvarchar(30), @date, 4) AS '4',
    CONVERT(nvarchar(30), @date, 5) AS '5',
    CONVERT(nvarchar(30), @date, 6) AS '6';

Resultado:

+----------+----------+----------+----------+----------+-----------+
| 1        | 2        | 3        | 4        | 5        | 6         |
|----------+----------+----------+----------+----------+-----------|
| 06/07/18 | 18.06.07 | 07/06/18 | 07.06.18 | 07-06-18 | 07 Jun 18 |
+----------+----------+----------+----------+----------+-----------+

Estilos 7 a 6

DECLARE @date datetime2 = '2018-06-07';
SELECT
    CONVERT(nvarchar(30), @date, 7) AS '7',
    CONVERT(nvarchar(30), @date, 8) AS '8',
    CONVERT(nvarchar(30), @date, 10) AS '10',
    CONVERT(nvarchar(30), @date, 11) AS '11',
    CONVERT(nvarchar(30), @date, 12) AS '12',
    CONVERT(nvarchar(30), @date, 14) AS '14';

Resultado:

+------------+----------+----------+----------+--------+------------------+
| 7          | 8        | 10       | 11       | 12     | 14               |
|------------+----------+----------+----------+--------+------------------|
| Jun 07, 18 | 00:00:00 | 06-07-18 | 18/06/07 | 180607 | 00:00:00.0000000 |
+------------+----------+----------+----------+--------+------------------+

Estilos con años de cuatro dígitos

A continuación se muestran ejemplos de los diversos valores que puede utilizar para especificar el estilo utilizando un componente de año de cuatro dígitos.

Estilos 100 a 103

DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677';
SELECT
    CONVERT(nvarchar(30), @date, 100) AS '100',
    CONVERT(nvarchar(30), @date, 101) AS '101',
    CONVERT(nvarchar(30), @date, 102) AS '102',
    CONVERT(nvarchar(30), @date, 103) AS '103';

Resultado:

+---------------------+------------+------------+------------+
| 100                 | 101        | 102        | 103        |
|---------------------+------------+------------+------------|
| Jun  7 2018  2:35AM | 06/07/2018 | 2018.06.07 | 07/06/2018 |
+---------------------+------------+------------+------------+

Estilos 104 a 108

DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677';
SELECT
    CONVERT(nvarchar(30), @date, 104) AS '104',
    CONVERT(nvarchar(30), @date, 105) AS '105',
    CONVERT(nvarchar(30), @date, 106) AS '106',
    CONVERT(nvarchar(30), @date, 107) AS '107',
    CONVERT(nvarchar(30), @date, 108) AS '108';

Resultado:

+------------+------------+-------------+--------------+----------+
| 104        | 105        | 106         | 107          | 108      |
|------------+------------+-------------+--------------+----------|
| 07.06.2018 | 07-06-2018 | 07 Jun 2018 | Jun 07, 2018 | 02:35:52 |
+------------+------------+-------------+--------------+----------+

Estilos 109 a 112

DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677';
SELECT
    CONVERT(nvarchar(30), @date, 109) AS '109',
    CONVERT(nvarchar(30), @date, 110) AS '110',
    CONVERT(nvarchar(30), @date, 111) AS '111',
    CONVERT(nvarchar(30), @date, 112) AS '112';

Resultado:

+--------------------------------+------------+------------+----------+
| 109                            | 110        | 111        | 112      |
|--------------------------------+------------+------------+----------|
| Jun  7 2018  2:35:52.8537677AM | 06-07-2018 | 2018/06/07 | 20180607 |
+--------------------------------+------------+------------+----------+

Estilos 113 a 114

DECLARE @date datetime2 = '2018-06-07 02:35:52.8537677';
SELECT
    CONVERT(nvarchar(30), @date, 113) AS '113',
    CONVERT(nvarchar(30), @date, 114) AS '114';

Resultado:

+------------------------------+------------------+
| 113                          | 114              |
|------------------------------+------------------|
| 07 Jun 2018 02:35:52.8537677 | 02:35:52.8537677 |
+------------------------------+------------------+

Estilos 120 a 127

DECLARE @date datetime2 = '2018-06-07';
SELECT    
    CONVERT(nvarchar(30), @date, 120) AS '120',
    CONVERT(nvarchar(30), @date, 126) AS '126',
    CONVERT(nvarchar(30), @date, 127) AS '127';

Resultado:

+---------------------+---------------------+---------------------+
| 120                 | 126                 | 127                 |
|---------------------+---------------------+---------------------|
| 2018-06-07 00:00:00 | 2018-06-07T00:00:00 | 2018-06-07T00:00:00 |
+---------------------+---------------------+---------------------+

Estilo 130

DECLARE @date datetime2 = '2018-06-07';
SELECT    
    CONVERT(nvarchar(30), @date, 130) AS '130';

Resultado:

+--------------------------------+
| 130                            |
|--------------------------------|
| 24 رمضان 1439 12:00:00.0000000 |
+--------------------------------+

Microsoft advierte que este valor no se representa correctamente en una instalación predeterminada de SSMS en EE. UU.

Estilo 131

DECLARE @date datetime2 = '2018-06-07';
SELECT    
    CONVERT(nvarchar(30), @date, 131) AS '131';

Resultado:

+-------------------------------+
| 131                           |
|-------------------------------|
| 24/09/1439 12:00:00.0000000AM |
+-------------------------------+

Puede obtener más información sobre los estilos de fecha/hora disponibles en el sitio web de Microsoft.