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 :

Récupérer une colonne DATETIME avec les millisecondes dans une requête SELECT


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 17
    Par défaut Récupérer une colonne DATETIME avec les millisecondes dans une requête SELECT
    J'ai une table SQL avec une colonne au format datetime.

    Quand j'enregistre une ligne via une application vb.net j'utilise une requête SQL du type INSERT INTO ...(.. , '13/02/2015 20:52:07.123',...)
    Quand je visualise le résultat depuis SQL Management Studio, je retrouve bien '13/02/2015 20:52:07.123', donc on peux penser que le format a bien été reconnu et enregistré.
    Quand je veux récupérer une ligne depuis mon application vb.net, je le fais à l'aide d'une requête du style "SELECT * FROM matable", mais quand je traite le champ correspondant à la date, le résultat est sous forme de chaîne de caractère : '2/13/2015 8:52:07 PM'
    Mes questions sont :
    - Existe-t-il un moyen global de spécifier le format retourné par toutes les requêtes SQL pour les colonnes de type datetime ? (style : jj/mm/yyyy hh:MM:ss.fff), ce qui éviterai de complexifier mes requêtes SQL.
    - Si non, comment faire une requête SQL qui me renverrai la date au même format que pour l'insertion.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut
    Bonjour,

    Citation Envoyé par PFabrice Voir le message
    J'ai une table SQL avec une colonne au format datetime.

    - Existe-t-il un moyen global de spécifier le format retourné par toutes les requêtes SQL pour les colonnes de type datetime ? (style : jj/mm/yyyy hh:MM:ss.fff), ...
    - Si non, comment faire une requête SQL qui me renverrai la date au même format que pour l'insertion.
    Le format que t'as choisi ( en rouge) est plutôt le format hégirien (calendrier musulman). Tu pourrais écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT CONVERT(VARCHAR(25), MaDate, 131)
    le code 131 est le code du format. Il existe plusieurs formats. tu peux t'exercer en suivant ce tuto Le type Datetime de SQL-Server; Pour ta date spécifiée, tu pourras la sélectionnée en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT CAST('13/02/2015 20:52:07.123' AS DATETIME)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT CAST(Madate AS DATETIME) de façon générale
    Cordialement.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 17
    Par défaut
    Merci pour ta réponse,

    Je connaissais cette méthode pour convertir les dates mais ça suppose qu'on connait par avance les colonnes qu'on va récupérer et qu'on les spécifie dans la requête SELECT.

    Je voulais surtout un paramètres général spécifiant à SQL Server de retourner toutes les datetime à un format particulier.

    Ce qui me permet de faire des requêtes du style SELECT * FROM maTable sans me soucier de savoir s'il y a des colonnes de type datetime dans la table.

    Il doit bien y avoir un moyen de dire à SQL Server comment retourner les datetime ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut
    Citation Envoyé par PFabrice Voir le message
    Merci pour ta réponse,

    Il me semble que t'as pas lu le tuto en entier, sinon t'as aurais eu un format convenable, il existe plusieurs formats.
    Je voulais surtout un paramètres général spécifiant à SQL Server de retourner toutes les datetime à un format particulier.

    Ce qui me permet de faire des requêtes du style SELECT * FROM maTable sans me soucier de savoir s'il y a des colonnes de type datetime dans la table.

    Il doit bien y avoir un moyen de dire à SQL Server comment retourner les datetime ?
    Tu voudrais faire des requêtes sur une colonne sans te soucier du type de donnée de celle-ci, c'est imprudent, et on s'expose aux messages d'erreurs.

    Par défaut, SQL SERVER enregistre les données monétaires, dates... en fonction des paramètres régionaux définies sur le poste. Donc aux USA, ces paramètres ne seront pas les même qu'en France. Pour savoir le format par défaut des dates sur ton serveur, il suit de faire:
    Tu pourrais consulter ces pages DATETIME SQL et SET DATEFORMAT.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 17
    Par défaut
    En fait c'est un peu exagéré quand je dis 'sans me soucier', ce que je voulais dire c'est que j'ai plusieurs tables qui contiennent des colonnes de type 'datetime' dans lesquelles j'enregistre des informations précises à la milliseconde, et comme je fais des requêtes du type "SELECT *" je ne voulais pas décrire la liste des colonnes dans mon select.
    Je suis sur une machine Windows 7 français, un SQL Server Français paramétré en langage Français, mais il me retourne des dates avec un format non français par défaut (2/13/2015 8:52:07 PM), j'ai donc dû rater quelque chose.
    Comme je le précise dans mon premier post, si je tape la requête dans management studio le résultat est correct (date en français avec les millisecondes), donc je pense que mon problème vient plutôt de mon code côté Visual studio.
    Je vais chercher de ce côté je pense.
    Merci encore pour ta réponse.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut
    Bonjour,

    Change la langue par défaut de SQL SERVER comme suit : SSMS -->Clic droit sur l'instance serveur --> Propriétés -->Avancé, et là t'auras cette figure, change la langue pour French. La date sera désormais au format français.

    ---> résultat : 2015-02-16 08:41:22.887

    Tu pourras insérer les dates sous ce format.

    Cordialement.
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/03/2015, 11h46
  2. Réponses: 3
    Dernier message: 02/04/2013, 23h10
  3. [XL-2010] Copier les cellules d'une colonne dont la valeur à changé dans une autre colonne
    Par caeruleum dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/09/2012, 22h01
  4. Mettre les données d'une colonne d'un fichier Excel dans une ArrayList
    Par kortobi dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 05/09/2012, 19h40
  5. Réponses: 3
    Dernier message: 27/07/2012, 11h25

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