Conversion d'entier en binary et de return dans SQL Server

Je me suis cogné la tête contre le mur avec celui-ci toute la matinée.

Le code SQL suivant et son résultat n'a aucun sens pour moi:

select CONVERT(INT, CONVERT(BINARY(30),2691485888)) 

ce qui entraîne:

 -1060082528 

Quelle? Pourquoi le résultat ne correspond-il pas à mon entier original?

Mon objective est de convertir un entier en octets et de stocker ces octets dans la database, mais sans que cet exemple de base fonctionne, je suis bloqué. Quelqu'un peut-il expliquer ce que je fais mal?

Par ailleurs, j'utilise Sql Server 2005 (9.0.4340)

Comme je l'ai noté dans mon précédent commentaire, 2 691 485 888 est plus grand que ce qu'un INT peut contenir.

Cela fonctionnera:

 select CONVERT(BIGINT, CONVERT(BINARY(30), CONVERT(BIGINT, 2691485888))) 

La valeur 2691485888 ne peut pas être conservée dans un INT – elle est trop grande:

int -2 ^ 31 (-2 147 483 648) à 2 ^ 31-1 (2 147 483 647) 4 octets

Il y a de fortes chances que vous voyiez le résultat d'un débordement.

Un type de données pouvant gérer cette valeur est BIGINT.

2691485888 est au-delà de la limite supérieure du type de données entier (qui est 2147483647)

Si vous le convertissez en bigint, le résultat devrait être correct.