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 :

Datetime sans time avec sql server ?


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Points : 145
    Points
    145
    Par défaut Datetime sans time avec sql server ?
    Bonjour, j'aimerai stocker uniquement la date dans ma base de donnees SQL Server 2005 et non pas le temps (00:00:00 par defaut).


    Quelqu'un a une idee ?


    merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Points : 406
    Points
    406
    Par défaut
    Le plus simple est d'enregistrer ta date dans un varchar.

  3. #3
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Ou utiliser un datetime et forcer l'heure à 00:00:00

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Points : 145
    Points
    145
    Par défaut
    Justement : l'heure est a 00:00:00 mais j'aimerai eviter de stocker l'heure.

  5. #5
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Citation Envoyé par FamiDoo
    Justement : l'heure est a 00:00:00 mais j'aimerai eviter de stocker l'heure.

    Tu ne peux pas enlever l'hrs dans un datetime. Ce que tu peux faire, comme tlm a dit, c'est de stocker 00:00:00. J'imagine que toi ca te cause un prob parce que tu veux comparer 2 date mais ils ont des hrs différente ...

    C'est pas une bonne idée de mettre ca dans un varchar. Le format datetime existe c'est pas pour rien. Sinon aussi bien de tout mettre en nvarchar(max) et ne pa typé ces columns.

  6. #6
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Si tu veux manipuler tes dates sans l'heure, tu peux toujours les convertir avec ceci :

    select convert(varchar(8), taDate, 112)

  7. #7
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    je me suis créé une function pour strippé l'hrs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ALTER FUNCTION [dbo].[StripTime]
    (
    	@Date AS DATETIME
    )
    RETURNS DATETIME
    AS
    BEGIN
    	RETURN convert(datetime, convert(varchar, @Date, 104), 104)
    END

  8. #8
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    C'est pas trop coutant niveau perf ?

  9. #9
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Citation Envoyé par Ptit_Dje
    C'est pas trop coutant niveau perf ?

    Nop, aucune perte de perf!

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Points : 406
    Points
    406
    Par défaut
    Citation Envoyé par shwin Voir le message
    C'est pas une bonne idée de mettre ca dans un varchar. Le format datetime existe c'est pas pour rien. Sinon aussi bien de tout mettre en nvarchar(max) et ne pa typé ces columns.
    J'ai proposé cette solution car elle est la seule permettant de stockée une date sans partie heure.
    La soltuion proposé de faire un convert revient à faire la même chose avec une chaine de caractères date.

  11. #11
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Points : 145
    Points
    145
    Par défaut
    Ok merci pour toutes ces infos les gars.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Le problème du cast en varchar est que si tu fais du tri sur ce champ, ton tri sera fait sur un varchar et non sur un datetime....

  13. #13
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    select convert(varchar(10), getdate(), 126)

  14. #14
    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 : 43
    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
    Citation Envoyé par Madinico
    Le plus simple est d'enregistrer ta date dans un varchar.
    Pas forcément, ça cela ôte la possibilité d'utiliser les fonctions natives pour la gestion des dates directement sur ces valeurs, ou tout simplement d'effectuer des recherches par intervalles de dates ...
    En ce sens, il est clairement mieux de stocker une date avec une heure à zéro.

    Citation Envoyé par shwin
    Nop, aucune perte de perf!
    Avec une fonction scalaire, ça ça m'étonnerait
    Sauf si elle est utilisée pour définir une colonne calculée, et que cette dernière est indexée.

    Rappelons qu'une valeur de type datetime est stockée sous la forme de deux entiers de 4 octets chacun, l'un représentant la date, et l'autre l'heure.
    Cela étant, il est donc plus correct de rester avec des nombres.

    Vous pouvez donc écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST(CEILING(CAST(GETDATE() AS float)) AS datetime)
    Rappelons aussi que vous pouvez utiliser le format ISO de dates : AAAAMMJJ.
    En effet celui-ci fonctionne à peu preès pour n'importe quel langage, et permet d'écrire directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST('20120812' AS datetime)
    @++

  15. #15
    Membre éprouvé Avatar de HelpmeMM
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juin 2007
    Messages : 473
    Points : 969
    Points
    969
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CAST(CEILING(CAST(GETDATE() AS float)) AS datetime)
     
    SELECT CAST(Floor(CAST(GETDATE() AS float)) AS datetime)
    Petite précision :
    attention utiliser floor et ceiling ne renverra pas le même résultat ainsi

    si on a une date au 16/07/2012 à 17h23 avec ceiling on obtiendra 17/07/2012 00h00
    en revanche avec floor on obtiendra 16/07/2012 00h00

    test effectué sous sql server 2008 r2

    ce qui est normal car les fonctions ne sont pas les même

    A voir laquelle répond le mieux à vos besoins

    NB:je précise car même si sa remonte à février et si l'Op a déjà eu sa réponse en recherchant sur le net je suis tombé sur ce post et dans mon cas c'est le floor qui m'intéressais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire tourner une application avec SQL SERVER sans SQL SERVER
    Par devvanjier dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/09/2010, 20h36
  2. remplire un crystal report sans connexion avec sql server
    Par charaf dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/03/2007, 13h17
  3. Gérer les queue avec sql server ?
    Par devdev dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 17/06/2004, 17h38
  4. Delete on cascade avec SQL server
    Par fadoua dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2004, 11h02
  5. Déployer une appli avec SQL SERVER
    Par tiboleo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 15/10/2003, 14h29

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