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 :

Format de date universel


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Par défaut Format de date universel
    Bonjour,
    J'ai une application qui fonctionne chez plusieurs clients (SQL server + c#) un utilise sqlserver avec e format des dates en anglais les autres en francais

    j'essai d'utiliser le format internationnal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Top(10000)  cast(year(min([dateProgramméDébut])) as nvarchar)  + cast(month(min([dateProgramméDébut])) as nvarchar) + cast(day(min([dateProgramméDébut])) as nvarchar) as  ResourceSort,  [Objet demande]   as Description,'OT' + cast([numOT] as nvarchar(100)) as ResourceId  FROM [rqt horaires rendez_vous]  WHERE    datediff(day,dateProgramméDébut,dateProgramméFin)<65 and    (dateProgramméFin >='2015-03-30 00:00:00') AND (DateProgramméDébut <= '2015-04-04 00:00:00') group by [numOTTxt],[Objet demande],[numOT],numOTPère order by min(dateProgramméDébut) ;
    cela m'envoi un défaut

    pouvez vous m'aider
    merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Le format "universel" est celui de la norme SQL...

    • Norme SQL avant la version 1999 : AAAAMMJJ
    • Norme SQL depuis le version 1999 : AAAA-MM-JJ



    Donc :
    • pour le type DATETIME (existe depuis Sybase...) => AAAAMMJJ
    • pour les types DATE, DATETIME2, DATETIMEOFFSET => AAAA-MM-JJ (ces types dont arrivés avec la version 2008)



    ATTENTION : le type DATETIME est considéré comme obsolète et doit être remplacé par DATETIME2 (il est notamment imprécis de 3 ms près...). De la même façon, le type SMALLDATETIME est à remplacer par du DATETIME2

    Tout autre format est susceptible de ne pas fonctionner en fonction de certains paramètres (langue par défaut, session...)

    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/ * * * * *

  3. #3
    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 SQLpro Voir le message
    Le format "universel" est celui de la norme SQL...

    • Norme SQL avant la version 1999 : AAAAMMJJ
    • Norme SQL depuis le version 1999 : AAAA-MM-JJ



    ...
    J'ai lu dans un post, il y a quelques jours que le format de Date n'existe pas.. Je me retrouve un peu confus. Post disponible ici.


    Concernant ta préoccupation, tu pourrais l'enregistrer les dates au format universel AAAAMMJJ pour ensuite faire le découpage nécessaire selon le besoin.

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Par défaut
    merci sqlPro
    j'ai du mettre AAAA-MM-JJTHH:mm:ss et cela semble fonctionner

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Alexandre le Grand Voir le message
    J'ai lu dans un post, il y a quelques jours que le format de Date n'existe pas.. Je me retrouve un peu confus. Post disponible ici.
    Oui, c'est même moi qui ait écrit cela...

    En effet une date, tout comme un nombre est un type de données. Pour les nombres cela ne vous choque pas de mettre le point à la place de la virgule dans les requêtes... Autrement dit, il n'existe pas de format de stockage, mais une requête (tout comme tout programme) est une suite de caractères, donc une chaine, qui est interprétée par la "parser". Si la représentation de la date en chaine est conforme à ce que le compilateur attend, alors cela sera validé.

    Tout ceci est donc vrai :
    Le concept de format de date n'existe pas.
    Le concept du formatage d'une chaine de caractères représentant une date est bien réel... lui !


    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/ * * * * *

  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
    Merci pour l'éclaircissement.

  7. #7
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Pour corroborer les propos de SQLPro, SQL Server stocke les type datetime sous la forme de deux entiers de 4 octets :

    - le premier entier représente le nombre de jours avant ou après le 1er Janvier 1900, qui sert de date référence
    - le second entier représente le nombre de millisecondes après minuit de la date

    Ce type nous autorise ainsi à stocker des valeurs de date et heure allant du 1er Janvier 1753 au 31 Décembre 9999 inclus, avec une précision à 3 millisecondes.

    Similairement, smalldatetime stocke les dates de façon moins précise que le type datetime, sous la forme de deux entiers de deux octets chacun :

    - les premier entier stocke le nombre de jours après le 1er Janvier 1900
    - le deuxième le nombre de minutes après minuit de la date

    Ce type nous autorise ainsi à stocker des valeurs de date et heure allant du 1er Janvier 1900 au 6 Juin 2079 inclus, avec une précision à la minute.

    SQL Server 2008 a introduit des types permettant d'accéder à une plus grande précision. On prendra pour seul exemple datetime2, qui occupe :

    - 6 octets pour une précision à la milliseconde
    - 7 octets pour une précision du dixième au centième de milliseconde
    - 8 octets pour une précision allant de la microseconde à 100 nanosecondes

    Tout ça pour dire que SQL Server ne retourne qu'une représentation de la date, qui est la représentation ISO.
    Celle-ci varie en fonction des cultures et des langues, du fuseau horaire, ...
    Le moteur stocke ces valeurs sous une forme qui permet de supporter une large plage de valeurs de façon efficace et performante.

    @++

Discussions similaires

  1. Format de date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/06/2004, 17h32
  2. Détecter le format de date au démarrage
    Par stigma dans le forum Access
    Réponses: 2
    Dernier message: 20/02/2004, 11h04
  3. Réponses: 11
    Dernier message: 02/09/2003, 14h20
  4. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19
  5. Réponses: 3
    Dernier message: 06/05/2002, 18h24

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