booleen et date

Le
didier
Bonjour
2 questions en 1.
Je doit contruire une base de donnée avec SQL 2005 et je rencontre quelque
soucies.
J'aimerais avec une entree date au format 20071115 et je n'arrive pas a
trouver un type de données qui correspond a ca, faut il créer une colonne en
int avec 8 caractéres ou y a t il cache quelque part un type de données qui
correspond ??
J'aimerais également avec des booleens, or transac SQL n'a pas l'air de
reconnaitre boolean ni meme logical, faut il creer une colonne varchar avec
un check 'V' / 'F' ou 'O' / 'N' ou il a t'il un type de données qui prend en
charge le booléen ??

Merci pour votre aide
Cordialement
Didier
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Rudi Bruchez
Le #11884761
Bonjour,


J'aimerais avec une entree date au format 20071115 et je n'arrive pas a
trouver un type de données qui correspond a ca, faut il créer une colonne en
int avec 8 caractéres ou y a t il cache quelque part un type de données qui
correspond ??



Le type de données est datetime, ou smalldatetime. Ne réfléchis jamais
en terme de format lorsque tu stockes des données. Le format est réservé
à l'affichage. A partir d'une valeur bien stockée, tu peux générer tos
les formats possibles à l'affichage. L'inverse est un casse-tête.
Pour obtenir le formatage demandé à partir d'un (small)datetime :
CONVERT(char(8), tacolonne, 112)
Si tu crées une colonne de type char(8) ou int, comment feras-tu pour
calculer, par exemple, la différence en jours entre deux dates ?

J'aimerais également avec des booleens, or transac SQL n'a pas l'air de
reconnaitre boolean ni meme logical, faut il creer une colonne varchar avec
un check 'V' / 'F' ou 'O' / 'N' ou il a t'il un type de données qui prend en
charge le booléen ??



type de données bit : valeurs possibles : 0, 1, NULL (si nullable)


--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT
http://www.babaluga.com/
http://rudi.developpez.com/
didier
Le #11884751
C'est tres clair
merci beaucoup pour la reponse.
Codialement
Didier

"Rudi Bruchez" a écrit :

Bonjour,


> J'aimerais avec une entree date au format 20071115 et je n'arrive pas a
> trouver un type de données qui correspond a ca, faut il créer une colonne en
> int avec 8 caractéres ou y a t il cache quelque part un type de données qui
> correspond ??

Le type de données est datetime, ou smalldatetime. Ne réfléchis jamais
en terme de format lorsque tu stockes des données. Le format est réservé
à l'affichage. A partir d'une valeur bien stockée, tu peux générer tos
les formats possibles à l'affichage. L'inverse est un casse-tête.
Pour obtenir le formatage demandé à partir d'un (small)datetime :
CONVERT(char(8), tacolonne, 112)
Si tu crées une colonne de type char(8) ou int, comment feras-tu pour
calculer, par exemple, la différence en jours entre deux dates ?

> J'aimerais également avec des booleens, or transac SQL n'a pas l'air de
> reconnaitre boolean ni meme logical, faut il creer une colonne varchar avec
> un check 'V' / 'F' ou 'O' / 'N' ou il a t'il un type de données qui prend en
> charge le booléen ??

type de données bit : valeurs possibles : 0, 1, NULL (si nullable)


--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT
http://www.babaluga.com/
http://rudi.developpez.com/



Michel Romieu
Le #11884681
On Wed, 26 Dec 2007 05:52:01 -0800, didier

Bonjour
2 questions en 1.
Je doit contruire une base de donnée avec SQL 2005 et je rencontre quelque
soucies.
J'aimerais avec une entree date au format 20071115 et je n'arrive pas a
trouver un type de données qui correspond a ca, faut il créer une colonne en
int avec 8 caractéres ou y a t il cache quelque part un type de données qui
correspond ??


char(8) tout simplement.
J'ai été amené à faire cela pour gérer des dates de naissances avec
des mois qui peuvent prendre la valeur 30, 50, 51, ...
L'exploitation se fait par une application C++, j'ai donc une classe
qui est associée et qui fournit tout les outils nécessaires.
Publicité
Poster une réponse
Anonyme