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

MS SQL Server Discussion :

[SQL Server 2000]Probleme avec les dates !


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 164
    Points : 92
    Points
    92
    Par défaut [SQL Server 2000]Probleme avec les dates !
    Bonjour,

    Dans une db sous sql server 2000 on a une table qui utilise une colonne de type datetime.

    J'aimerais savoir
    quelle est la query SQL à utiliser pour obtenir la ligne qui correspond à une date bien précise (date + timestamp)?

    J'ai éssayé la condition suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     WHERE     (c1.timestamp BETWEEN @ADATE AND DATEADD(s, 1, @ADATE))
    avc des résultats assez surprenants, car alléatoires. Des fois le Between correspondait à "a <= x < b", d'autres fois ça revenait à "a < x <= b".


    Je vous remercie pour vos idées
    Christophe

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : mai 2006
    Messages : 2 573
    Points : 4 040
    Points
    4 040
    Par défaut
    Bonjour,

    Je suppose que par "timestamp" tu veux dire "time". A quelle précision ? La précision du datetime est au 3/100e de seconde. Une date stockée en timestamp est arrondie au 3/100e de secondes, ce qui peut peut-être expliquer tes différences.
    Donc : quelle précision veux-tu obtenir, et qu'y-a-t'il dans @ADATE ?
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  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
    20 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : mai 2002
    Messages : 20 985
    Points : 49 809
    Points
    49 809
    Billets dans le blog
    1
    Par défaut
    ATTENTION : le type TIMESTAMP de SQL Server n'a rien à voir avec le type TIMESTAMP de la norme SQL. Le TIMESTAMP version SQL Server est un nombre aléatoire proche de la notion de GUID.

    Si vous voulez un TIMESTAMP (norme SQL) dans SQL Server il faut utiliser un DATETIME (combiné date + heure)

    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 régulier
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 164
    Points : 92
    Points
    92
    Par défaut
    salut salut

    dans @date il y'a ce format : date complete + heure minute seconde !

    on travaille avec un champ datetime mais quand on effecute la meme requete on a certains resultats qui restent identiques mais d'autes sont differents !

    si vous avez des idées !

    Bonne journée
    Christophe

  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
    20 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : mai 2002
    Messages : 20 985
    Points : 49 809
    Points
    49 809
    Billets dans le blog
    1
    Par défaut
    S'il s'agit bien de DATETIME alors votre problème est effectivement lié à l'imprécision de ce type qui est limité à 3ms.

    Par exemple la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ...
    WHERE MaDate BEWTEEN '20050101 00:00:00.000' 
                     AND '20050101 23:59:59.999'
    Vous renverra même les dates au '20050102 00:00:00.000'
    en revanche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ...
    WHERE MaDate BEWTEEN '20050101 00:00:00.000' 
                     AND '20050101 23:59:59.998'
    Ne prendra pas en compte les lignes dont la date est le jour suivant à zéro heure.

    Pour comprendre ce phénomène, faites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CAST('20050101 23:59:59.999' AS DATETIME) AS D1, 
           CAST('20050101 23:59:59.998' AS DATETIME) AS D2
    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/ * * * * *

Discussions similaires

  1. PL/SQL dans APEX Probleme avec les Dates
    Par teen6517 dans le forum PL/SQL
    Réponses: 9
    Dernier message: 16/02/2011, 18h27
  2. [SQL SERVER 2000] Probleme avec "NOT IN"
    Par monsurf dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 19/04/2007, 10h51
  3. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 17h55
  4. Grop probleme avec les date
    Par stinger000 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/04/2006, 14h49
  5. Réponses: 2
    Dernier message: 04/04/2006, 11h34

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