IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Comment convertir varchar au format de date


Sujet :

Développement SQL Server

  1. #1
    Membre éclairé
    Homme Profil pro
    test
    Inscrit en
    Mai 2016
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : test
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Mai 2016
    Messages : 346
    Par défaut Comment convertir varchar au format de date
    bonjour a tous

    Je veux convertir mon champ (dateVar = '09 / 2018 ') en un champ de date réelle. En fait, je n'ai que des mois et des années, alors je dois ajouter juste 01 comme un jour. Mon résultat final devrait être 2018-09-01
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE dateTable (
        dateVar varchar(10)
    );
     
    insert into dateTable (dateVar)
    values('08/2018'),('01/2017');
    j'ai utilisé ceci pour convertir à la date mais ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CONVERT(date, dateVar, 103) FROM dateTable
    Message d'erreur Msg 241, Level 16, State 1, Line 8
    Échec de la conversion de la date et/ou de l'heure à partir d'une chaîne de caractères.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Par défaut
    Bonjour,

    Tu te donne a toi même la réponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT CONVERT(date, '01/'+ dateVar , 103)
    Sinon tu as les tableaux de conversion ici : https://docs.microsoft.com/fr-fr/sql...ql-server-2017

    A++

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    Une date étant une date, c'est impérativement une année et un mois et un jour.

    Pour construire une date : DATEFROMPARTS(An, Mois, Jour)

    Pour convertir une chaine de caractères en date : CONVERT(DATE, 'maDateEnChaine', culture)

    --> culture étant un numérique représentant une format de chaine de caractères représenant une date dans une culture précise (US, FR...) =>
    https://docs.microsoft.com/fr-fr/sql...ql-server-2017

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Billets dans le blog
    8
    Par défaut
    Bonjour,

    Ou bien, une autre façon de formuler est de procéder comme suit :

    1 - Type de format "Non séparé", Indépendant de "SET DATEFORMAT", Indépendant de "SET LANGUAGE", Multilingue
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST(SUBSTRING(dateVar, 4, 5) + SUBSTRING(dateVar, 1, 2)+ '01' AS DATE) FROM dbo.DateTable;

    2 - Type de format "ISO 8601", Indépendant de "SET DATEFORMAT", Indépendant de "SET LANGUAGE", Multilingue
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST(SUBSTRING(dateVar,4,5) + '-' + SUBSTRING(dateVar, 1, 2)+ '-' + '01T00:00:00' AS DATE) FROM dbo.DateTable;

    A+

Discussions similaires

  1. [AC-2007] comment convertir un nombre format 20120101 en format date
    Par arabi91 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/03/2012, 16h53
  2. Comment convertir d'une chaîne en Date
    Par the watcher dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 16/08/2010, 12h21
  3. Comment convertir un timestamp négatif en date ?
    Par Sergejack dans le forum Requêtes
    Réponses: 5
    Dernier message: 05/11/2007, 17h02
  4. Comment convertir une date MySQL au format francophone ?
    Par bilane dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 11/09/2006, 10h44
  5. Réponses: 14
    Dernier message: 29/06/2005, 10h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo