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 coder une date NULL dans un champ datetime ?


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 70
    Points
    70
    Par défaut Comment coder une date NULL dans un champ datetime ?
    Bonsoir,

    Une procédure stockée pour crée ou fait la mise à jour d'un enregistrement de Sql Server 2K.
    Mon problème, c'est si la date n'est pas saisie (a la valeur NULL). Cette valeur est transformée en une date bizarre : 30/12/1899 ?
    Comment garder la date avec la valeur indéterminée NULL. Sinon mes calculs seront faussés.
    Merci pour un conseil.

  2. #2
    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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    N'y a-t-il pas une contrainte de valeur par défaut sur cette colonne ou un trigger sur cette table?
    Pour rechercher la liste de toutes les contraintes sur votre table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT TABLE_NAME,
    	COLUMN_NAME,
    	CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
    WHERE TABLE_NAME = 'maTable'
     
    -- Autre exemple
    SELECT OBJETS.name nomContrainte,
    		OBJECT_NAME(OBJETS.parent_id) nomTable,
    		COLONNES.name nomColonne
    FROM sysobjects OBJETS
    JOIN sysconstraints CONSTRAINTES ON CONSTRAINTES.id = OBJETS.id
    JOIN syscolumns COLONNES ON COLONNES.colid = CONSTRAINTES.colid
    WHERE OBJETS.type = 'D'
    Pour visualiser la liste des triggers attachés à votre table, regardez dans l'explorateur d'objets (F8) la node "Déclencheurs" pour votre table.

    @++

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 70
    Points
    70
    Par défaut
    Bonjour,
    Je n'ai pas de contraintes sur cette colonne ni de triggers sur la table.

    Si Je fais la mise à jour manuelle à partir d'une procédure stockée:
    "update matable set dateope=NULL where nm=501" => dateope a réellement la valeur NULL.
    Mais si je fais la mise à jour à partir de mon programme Borland Builder C++ 6, là j'ai la date bizarre : voilà mon code :
    La date est passée à la fonction en AnsiString *dao
    et la date :
    .......
    Le traitement de la dateope (dao)
    if(dao->Length() == 0)
    sp->Parameters->CreateParameter("@DateOpe", ftDateTime, pdInput, 10, NULL);
    else
    sp->Parameters->CreateParameter("@DateOpe", ftDateTime, pdInput, 10, StrToDate(*dao));
    ......
    J'ai essayé un autre traitement où le type du champ est ftDate au lieu de ftDateTime. Tj avec le résultat.

  4. #4
    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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    La gestion de l'absence de valeur, est, jusqu'il y a peu, peu implémentée dans les langages qui ne gèrent pas des bases de données.
    N'est-ce pas votre programme C++ qui met la valeur de la date au 30/12/1899 ?

    @++

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/01/2015, 18h59
  2. Insertion d'une valeur NULL dans un champs DATETIME
    Par jockhip12 dans le forum Requêtes
    Réponses: 5
    Dernier message: 17/02/2012, 12h58
  3. Réponses: 1
    Dernier message: 03/05/2011, 12h40
  4. Réponses: 3
    Dernier message: 10/08/2005, 11h11
  5. Inserer une valeur NULL dans un champ datetime
    Par Karibou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/08/2005, 10h58

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