Étiquette : SQL Server

[SQL] Convertir une colonne Date/Heure

[SQL] Convertir une colonne Date/Heure

Dans SQL Server, il est possible de convertir en date courte ou en chaine de caractères une colonne de type DATETIME. On peut utiliser la fonction CONVERT() ou encore la fonction CAST(). Dans cet exemple, nous utilisons la première qui prend en paramètre le type de données de destination ainsi que sa longueur (facultative), l’expression à convertir et enfin le style qui spécifie comment doit être traduite l’expression.

SELECT CONVERT(VARCHAR(10), [ma_colonne], 112) 
FROM table

La requête va renvoyer des dates au format ISO « AAAAMMJJ » soit l’année, le mois et le jour. Si on regarde la documentation, c’est grâce à la valeur 112 spécifiée pour le style que l’on obtient ce résultat. On peut donc facilement personnaliser la valeur retournée par la requête. Cela peut également être très pratique dans une condition.

[SQL] Mémo – Modifier le type d’une colonne

[SQL] Mémo – Modifier le type d’une colonne

Pour modifier le type d’une colonne dans une table DB2/400, vous pouvez utiliser la syntaxe ALTER TABLE … ALTER COLUMN. Il faudra cependant spécifier une clause supplémentaire : SET DATA TYPE. Cela vous permettra de changer la taille par exemple, ou bien passer d’un entier sur 4 octets à un entier sur 8. Exemple :

ALTER TABLE 'biblio.table' ALTER COLUMN email 
SET DATA TYPE varchar(50);

Dans cet exemple nous modifions la colonne qui contient l’e-mail en indiquant qu’on souhaite une chaine de caractères à taille variable d’un maximum de 50 caractères. Dans SQL Server, cela donnerait quelque chose comme ceci :

ALTER TABLE 'schema.table' ALTER COLUMN email varchar(50);

Et dans Oracle ou même MySQL :

ALTER TABLE 'schema.table' MODIFIY COLUMN email varchar(50);

Bon développement !

[SQL] 80040e57 : Arithmetic Overflow SQL Server

[SQL] 80040e57 : Arithmetic Overflow SQL Server

Lorsque vous effectuez une insertion dans une colonne avec une valeur numérique trop grande ou lorsque vous effectuez par exemple une somme impliquant une ou plusieurs colonnes numérique dont le résultat dépasse le type imposé (par exemple, le résultat obtenu dépasse l’entier), vous obtenez l’exception 80040e57 avec par exemple le message d’erreur suivant : “Arithmetic overflow error converting expression to data type int”.

Poursuivre la lecture « [SQL] 80040e57 : Arithmetic Overflow SQL Server »

[WD17] Le délai d’attente de la requête a expiré

[WD17] Le délai d’attente de la requête a expiré

Lorsque vous tentez d’exécuter une requête sur un serveur distant SQL Server, vous pouvez obtenir l’erreur suivante : “Erreur 80040e31, le délai d’attente de la requête a expiré”. En fait, le serveur n’a pas répondu assez vite à la commande envoyée.

En effet, il faut bien distinguer le temps d’exécution maximum d’une requête distante (qu’on définit dans les paramètres de SQL Server) et le temps accordé avant qu’une commande envoyée n’expire. C’est pour cela qu’on ne doit pas modifier directement de paramètre sur le serveur mais bien dans la chaine de connexion à la base de données.

Poursuivre la lecture « [WD17] Le délai d’attente de la requête a expiré »

[SQL] Nouvelle table via un SELECT INTO

[SQL] Nouvelle table via un SELECT INTO

Pour certains, il pourrait s’agir d’un rappel de syntaxe, pour d’autres, et ce fut mon cas, ceci est plutôt une découverte. Lorsque vous souhaitez sauvegarder rapidement le contenu d’une table sans passer par un système complexe, il vous suffit d’utiliser une requête de type SELECT … INTO … FROM.

Poursuivre la lecture « [SQL] Nouvelle table via un SELECT INTO »