Salut,
Comment formater l'affichage d'un champs date de la forme '20091201 ' sous la forme ' 01122009 ' sous Sql Server 2005 ?
Je rajoute que dans la base le champs à formater est de type decimal (8).
Version imprimable
Salut,
Comment formater l'affichage d'un champs date de la forme '20091201 ' sous la forme ' 01122009 ' sous Sql Server 2005 ?
Je rajoute que dans la base le champs à formater est de type decimal (8).
Bonsoir,
Pourquoi ce choix de decimal ?
Vous voulez une chaîne en sortie ?
Vous trouverez sans doute votre bonheur (je parle de SQL) ici
@+
Bonjour,
En effet, pourquoi avoir choisi le type DECIMAL pour stocker des entiers ?
Avec une précision de 8, vous utilisez 5 octets, alors qu'avec un INT vous en utiliseriez 4 ;)
Si vous souhaitez passer au type INT :
Comme vous avez pu le voir dans la documentation de la fonction CONVERT(), le style d'affichage 105 est jj-mm-aaaa, donc ce n'est pas ce donc vous avez besoin.Code:
1
2 ALTER TABLE maTable ALTER COLUMN maColonne INT
Pourquoi convertir en DATETIME alors que vous voulez un DECIMAL(8) ?
Suivant le choix que vous avez fait plus haut :
Si vous devez traiter une table, je vous conseille de créer une fonction...Code:
1
2 SELECT CAST(REPLACE(CONVERT(CHAR(10), CAST('20091201' AS DATETIME), 103), '/', '') AS DECIMAL(8)) SELECT CAST(REPLACE(CONVERT(CHAR(10), CAST('20091201' AS DATETIME), 103), '/', '') AS INT)
@++ ;)
Bonjour,
Merci elsuket pour votre aide.
J'ai changé le type des données en Int.
Le problème maintenant que ça bloque au niveau de la conversion en Datetime avec le message d'erreur suivant :
Code:
1
2
3Une erreur de dépassement arithmétique s'est produite lors de la conversion de expression en type de données datetime.
Bizarre, je viens d'essayer avec une date de l'année 9999, la conversion se fait proprement ...
Sauriez-vous quelle date donne ceci ?
Il reste un autre problème : si le jour est inférieur à 10, alors on obtient en entier qui représente la date, mais "codée" sur 7 chiffres ...
Ce que je ne comprends toujours pas, c'est pourquoi vous vous échinez à stocker des dates avec des types de données qui ne sont pas conçus pour les supporter ...
@++ ;)
Avant le fromatage de votre date, ajouter l'instruction :
SET LANGUAGE French
Ca devrait passer.
http://www.xoowiki.com/Article/SQL-S...efaut-192.aspx
ou SET LANGUAGE English
Salut,
Oui avec un exemple pris à l'appui tel que 20090101 ça marche, le seul problème est que le résultat est stocké sur 7 chiffres comme tu l'as précisé.
Pour le champs que j'ai à formater, non !! ça me génère le message d'erreur 'erreur de dépassement arithmétique ' ,
Mon champs est de type numeric (8,0).
Citation:
Ce que je ne comprends toujours pas, c'est pourquoi vous vous échinez à stocker des dates avec des types de données qui ne sont pas conçus pour les supporter ...
En fait, pour nous, le stockage des dates se fait sous forme d'un entier à 8 chiffres : exemple 20090101 .
Je n'ai pas à changer le format donc.
Il a juste fallu la manipuler en tans que chaine avec substring .
Amirad, pourquoi ne pas utiliser le type DATETIME (ou DATETIME2(3) sous SQL Server 2008) tout simplement ?
Sacha79, et si l'application est internationalisée, on fait comment ?
Seul le format ISO est multi-plateforme ;)
@++ ;)