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 :

Comment savoir si la date d'un datetime a été initialisée ?


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut Comment savoir si la date d'un datetime a été initialisée ?
    Bonjour,

    Un datetime étant stockée sous la forme aaaammjj hh:mm:ss dans ma base de données SQL Server 2005, j'arrive à savoir si l'heure est remplie en vérifiant que hh:mm est différent de 00:00.

    Par contre pour la date, je suis obligé de regarder si elle vaut 1900/01/01 ou 1753/01/01, ces deux valeurs étant la valeur initiale minimum pour respectivement les smalldatetime et les datetime.

    Existe t'il un autre moyen de vérifier si une date a été remplie ?

    (je passe par un formulaire sur lequel un utilisateur remplie la date et/ou l'heure. J'insère ces données dans un champ datetime d'une table de ma base de données. En fonction de si l'utilisateur a rempli seulement l'heure ou seulement la date, j'ai besoin de vérifier la valeur de la date)

    P.S. : avec MySql par exemple, c'est plus simple car on pouvait initialiser un date time à 0000-00-00 00:00, hors avec Sql Server ça ne marche pas

    D'avance merci

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 106
    Par défaut
    Personnellement, j'ai rencontré pas mal de soucis avec les formats de date internes des différentes versions de SQL Server.

    Une solution bourrin et très efficace c'est de coder son propre format propriétaire de date:

    moi j'utilise un champ BIGINT au format suivant:

    AAAAMMJJHHMMSS

    ca permet de faire un tri facile, et de s'affranchir des versions de SQL Server anglaises, francaises et autres formats, incompatibilités avec le paramétrage du serveur dû à d'autres BD. (ça c'était pour régler mon problème perso)

    Peut être que dans ton cas précis, tu peux définir 2 champs int, autorisant les NULL:

    date: AAAAMMJJ
    Heure: HHMMSS

    Ca te permet de les séparer, de tester si ca a été saisi (NULL ou pas), et tu pourras gérer comme tu l'entends la date et l'heure.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 88
    Par défaut
    Il vaut mieux laisser le champ à null alors, plutôt que d'insérer la valeur '' qui sera transformée dans une des date précitée.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    bonjour David, bonjour Chillansky,

    effectivement ce serait une solution de créer deux colonnes int..
    par contre les tables sont déjà créés dans ma base de donneés, et je ne sais pas si je pourrais la modifier.

    pour répondre à chillansky, malheureusement parfois j'ai besoin de spécifier une heure mais pas une date. Et donc la date doit être à "zéro" ou plutôt les dates précitées (1753 ou 1900)..

    Je vais peut être chercher une autre piste, .. si c'est possible de récupérer la valeur 0 par un moyen telle qu'en récupérant le temps écoulé depuis la valeur initiale (1900 ou 1753). Peut être qu'une fonction sql server permet cela. Ou bien peut être c#.. peut être une conversion en binaire ou je ne sais pas..

    je verrai ça la semaine prochaine.

    merci !

    si quelqu'un a une idée en attendant je suis preneur

Discussions similaires

  1. Comment Savoir si des dates se chevauchent ?
    Par Slumpy dans le forum VB.NET
    Réponses: 5
    Dernier message: 23/10/2007, 10h45
  2. [Python2.4] Comment savoir si une date est jour férié ou pas ?
    Par Ekimasu dans le forum Général Python
    Réponses: 10
    Dernier message: 30/03/2007, 16h34
  3. Comment savoir si une date a été intialisée ?
    Par laurent_ifips dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 20/02/2007, 09h33
  4. Comment savoir que deux dates sont égales ?
    Par bassim dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 19/12/2006, 19h36
  5. Réponses: 3
    Dernier message: 03/11/2006, 11h29

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