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 :

getdate() - Même résultat sur une même requête?


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Par défaut getdate() - Même résultat sur une même requête?
    Bonjour,

    J'ai une question quizz pour vous.

    Sur SQL-Server 8.

    Si j'appelle la fonction getdate() plusieurs fois dans un seul select, comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select cast(DATEPART(yyyy, getDate()) as varchar(4))+ right('0'  + cast(datepart(mm,getDate()) as varchar(2)),2) + right('0' + cast(DATEPART(dd,getDate()) as varchar(2)),2)
    Est-ce que la valeur que getdate() renvoie sera la même les trois fois?

    Mon interrogation proviens du fait que, si la requête s'exécute à 23:59:99.... n'y a-t-il pas de chance que la date change entre les deux appels de getdate() et donc, la valeur retournée soit erronée....

    Et, y-a-t'il un impact entre la requête présentée et une requête qui prend plusieurs secondes à exécuter?

    Merci pour votre réponse

  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
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    le cas est rare, mais possible que la dateheure soit différente. Il vaudrait mieux paramétrer la requête dans ce cas.

    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 chevronné
    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
    Par défaut
    Au lieu de te tracasser l'esprit avec des concaténation de chaine en utilisant trois getdate(), il y a beaucoup plus simple. En effet, l'instruction convert() permet de transformer les champs datetime avec un format voulu. Dans votre cas tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT CONVERT(VARCHAR(8),GETDATE(),112)

  4. #4
    Membre éclairé Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Par défaut
    Citation Envoyé par Madinico Voir le message
    Au lieu de te tracasser l'esprit avec des concaténation de chaine en utilisant trois getdate(), il y a beaucoup plus simple. En effet, l'instruction convert() permet de transformer les champs datetime avec un format voulu. Dans votre cas tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT CONVERT(VARCHAR(8),GETDATE(),112)
    Wow... ça semble bizarre mais je ne connaissais pas cette particularité du convert... j'utilise beaucoup la fonction cast , alors je ne m'étais jamais interessée à la fonction convert...

    Merci beaucoup

    SQLpro - Merci beaucoup pour la réponse

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

Discussions similaires

  1. Requête deux résultats sur une même ligne
    Par delaio dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/02/2012, 12h10
  2. GroupBy 2 résultat sur une même colonne
    Par defcon_suny dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/06/2010, 08h34
  3. Réponses: 2
    Dernier message: 31/01/2009, 20h49
  4. Réponses: 2
    Dernier message: 05/04/2008, 17h33
  5. getdate() - Même résultat sur une même requête?
    Par Baquardie dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/09/2007, 15h42

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