Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/03/2011, 11h23   #1
 
Inscription : octobre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 38
Points : -1
Points : -1
Par défaut Aide conversion champs de type char en champ datetime

Bonjour

J'ai une requête de type :

Code :
1
2
AND (cast(sd_question_result.result AS char) )  > CONVERT(CHAR(10), GETUTCDATE(),103)             
AND (cast(sd_question_result.result AS char) ) <= CONVERT( CHAR(10),  dateadd(day,3,GETUTCDATE()), 103 )
En analysant la dernière ligne avec un résultat de type 'char' , je souhaiterai le faire interpréter en date.

Une fois ce champ passé en date , l'objectif est d 'effectuer une comparaison entre ce résultat date et un autre champ date de type datetime.

Merci de votre retour
litlepom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 11h42   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 993
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 993
Points : 18 246
Points : 18 246
Envoyer un message via MSN à CinePhil
Les fonctions de date sont souvent spécifiques au SGBD utilisé. Quel est le tien ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 11h43   #3
 
Inscription : octobre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 38
Points : -1
Points : -1
Bonjour et merci de ton retour
Nous sommes en sql server 2005
litlepom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 12h06   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour

Quel est le type de la colonne sd_question_result.result, et que contient-elle ?

Si elle contient une date, tu peux transtyper directement en DATETIME :

Code SQL :
1
2
3
 
AND CAST(sd_question_result.result AS DATETIME) > GETUTCDATE() 
AND CAST(sd_question_result.result AS DATETIME) <= DATEADD(DAY,3,GETUTCDATE())
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 12h23   #5
 
Inscription : octobre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 38
Points : -1
Points : -1
Merci de ton retour
Elle est de type ntext
litlepom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 12h26   #6
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par litlepom Voir le message
Merci de ton retour
Elle est de type ntext
peux tu nous donner un exemple de ce qu'elle contient comme valeur.

As-tu essayé le code que je t'ai proposé (pour qu'il fonctionne, il faut que la colonne sd_question_result.result contienne une date dans un format reconnu) ?
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 12h31   #7
 
Inscription : octobre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 38
Points : -1
Points : -1
Elle peut contenir du texte , des dates , des chiffres
litlepom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 12h32   #8
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par litlepom Voir le message
Elle peut contenir du texte , des dates , des chiffres
qui sont censés représenter une date ?
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 13h45   #9
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
qui sont censés représenter une date ?
+1
A moins d'une table de valeur avec une colonne indiquant le type de la donnée...
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 18h18   #10
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 667
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 667
Points : 8 715
Points : 8 715
Bonjour,

Encore une fois on stocke des données sous un type qui ne convient pas aux traitements que l'on veut en faire ...

D'autre part le type de données ntext est déprécié, et a été remplacé, dès la version 2005, par le type nvarchar(max), bien plus malléable

Ensuite, êtes vous certain d'avoir besoin de stocker des données en Unicode ?
Unicode (types n(var)char(X)) de SQL Server vous permet de stocker tout caractère de n'importe quel alphabet, y compris leurs chiffres.
En revanche il vous en coûte 2 octets par caractère.
Si donc vous n'avez pas besoin de stocker ni du Thai, ni du Chinois, ni de l'Arabe, ni du Japonais, ni de l'Hébreu, ni du Russe, ni aucune langue n'utilisant pas les caractères latins ..., vous pouvez utiliser le type (var)char(X), et il vous en coûte alors 1 octet par caractère ...

Enfin avant de choisir le stockage au type LOB ((n)(var)char(max)) de vos chaînes de caractère, connaissez-vous la longueur maximale de vos chaînes ? si elles sont assez courtes (comme vos "dates"), il n'y a pas besoin de recourir à ceux-ci ...

Un petit billet sur le sujet ici

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h20.


 
 
 
 
Partenaires

Hébergement Web