CAST y CONVERT (SQL Server Compact)

Convierte de forma explícita una expresión de un tipo de datos a otro. CAST es una variante sintáctica de CONVERT.

Sintaxis

Syntax for CAST:
CAST ( expression AS data_type [ (length ) ])
Syntax for CONVERT:
CONVERT ( data_type [ ( length ) ] ,expression [ ,style ] )

Argumentos

  • data_type
    El tipo de datos proporcionado por el sistema de destino es bigint. No se pueden utilizar tipos de datos definidos por el usuario. Para obtener más información acerca de los tipos de datos disponibles, vea Tipos de datos.

  • Length
    Parámetro opcional de los tipos de datos nchar, nvarchar, char, varchar, binary o varbinary.

  • Expression
    Cualquier expresión válida de SQL Server Compact 3.5. Para obtener más información, vea Expresiones (SQL Server Compact).

  • Style
    Estilo del formato de fecha que se usa para convertir datos datetime o smalldatetime a datos de tipo carácter (tipos de datos nchar, nvarchar, char, varchar, nchar o nvarchar), o bien el formato de cadena al convertir datos de tipo float, real, money o smallmoney en datos de tipo carácter (nchar, nvarchar, char, varchar, nchar o nvarchar). Si style es NULL, el resultado devuelto también es NULL.

    Para obtener más información, vea la sección "Notas" posteriormente en este tema.

Notas

SQL Server Compact 3.5 es compatible con el formato de fecha en estilo árabe, mediante el algoritmo Kuwaití.

En la siguiente tabla, las dos columnas de la izquierda representan los valores de style para la conversión de los tipos de datos datetime o smalldatetime en tipos de datos de carácter. Agregue 100 a un valor de style para obtener un año con cuatro dígitos que incluya el siglo (aaaa).

Sin el siglo (aa)

Con el siglo (aaaa)

Estándar

Entrada/Salida**

-

0 ó 100 (*)

Predeterminado

mes dd aaaa hh:mi a.m. (o p.m.)

1

101

Estados Unidos

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

-

dd mes aa

7

107

-

Mes dd, aa

8

108

-

hh:mm:ss

-

9 ó 109 (*)

Valor predeterminado + milisegundos

mes dd aaaa hh:mi:ss:mmm a.m. (o p.m.)

10

110

Estados Unidos

mm-dd-aa

11

111

JAPÓN

aa/mm/dd

12

112

ISO

Aammdd

-

13 ó 113 (*)

Valor predeterminado para Europa + milisegundos

dd mes aaaa hh:mm:ss:mmm (24h)

14

114

-

hh:mi:ss:mmm (24h)

-

20 ó 120 (*)

ODBC canónico

aaaa-mm-dd hh:mi:ss (24h)

-

21 ó 121 (*)

ODBC canónico (con milisegundos)

aaaa-mm-dd hh:mi:ss.mmm (24h)

-

126(***)

ISO8601

aaaa-mm-ddThh:mm:ss.mmm (sin espacios)

-

130*

Hijri****

dd mes aaaa hh:mi:ss:mmm a.m.

-

131*

Hijri****

dd/mm/aa hh:mi:ss:mmm a.m.

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

** Entrada al convertir a datetime. Salida al convertir a datos de tipo carácter.

*** Diseñado para usarse con XML. Para convertir datos del tipo datetime o smalldatetime a character, el formato de salida es el descrito en la tabla. Para convertir datos del tipo float, money o smallmoney a character, la salida es equivalente a style 2. Para la conversión del tipo de datos real a character, la salida es equivalente a style 1.

**** Hijri es un sistema de calendario con distintas variaciones, de las cuales SQL Server Compact 3.5 usa el algoritmo Kuwaiti.

En la siguiente tabla se muestran los valores de style para convertir los tipos de datos float o real a datos de tipo carácter.

Valor

Salida

0 (predeterminado)

Máximo de seis dígitos. Úselo en notación científica, cuando proceda.

1

Siempre ocho dígitos. Úselo siempre en notación científica.

2

Siempre 16 dígitos. Úselo siempre en notación científica.

En la siguiente tabla, la columna de la izquierda representa el valor de style para convertir datos de tipo money o smallmoney en datos de tipo carácter.

Valor

Salida

0 (predeterminado)

Sin puntos a la izquierda del separador decimal y dos dígitos a la derecha del separador decimal. Ejemplo: 4235.98.

1

Puntos cada tres dígitos a la izquierda del separador decimal y dos dígitos a la derecha del separador decimal. Ejemplo: 3,510.92.

2

Sin puntos a la izquierda del separador decimal y cuatro dígitos a la derecha del separador decimal. Ejemplo: 4235.9819.

Use style 128 para quitar los ceros finales de un conjunto de resultados cuando convierta un tipo de datos numeric o decimal a datos de caracteres.

Importante

Cuando se usa CAST o CONVERT para nchar, nvarchar, binary y varbinary, SQL Server trunca los valores a un máximo de 30 caracteres. SQL Server Compact 3.5 permite 4000 para nchar y nvarchar, y 8000 para binary y varbinary. Por ello, los resultados generados al consultar SQL Server y SQL Server Compact 3.5 son diferentes. Cuando el tamaño de los tipos de datos se especifica como nchar(200), nvarchar(200), binary(400), varbinary(400), los resultados son coherentes a través de SQL Server y SQL Server Compact 3.5.

En la ilustración siguiente se muestran conversiones de datos explícitas e implícitas en SQL Server Compact 3.5.

Conversiones de datos implícitas y explícitas

Ejemplos

En el siguiente ejemplo se convierte un valor datetime en un valor nvarchar.

SELECT OrderDate, CONVERT(nvarchar(10), OrderDate, 101)
FROM Orders

Convierte una expresión de un tipo de datos a otro. En el ejemplo siguiente, el resultado de la conversión es 10.

SELECT CAST(10.6496 AS int)

Cuando se produce una conversión de datos en la que el tipo de datos de origen tiene menos lugares decimales que el de destino, el valor se redondea. Por ejemplo, el resultado de la conversión siguiente es $10.3497.

SELECT CAST(10.3496847 AS money)