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 :

Lister les tables information_schema.tables entre deux dates [2005]


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Lister les tables information_schema.tables entre deux dates
    Bonjour,

    J'ai une application qui crée quotidiennement des tables dont le nom contient une date.

    Exemple:
    [..]
    matable_2014_09_08_I15_K52
    matable_2014_09_09_I78_K36
    matable_2014_09_10_I23_K87
    [..]

    Ces tables sont bien sûr contenues dans information_schema.tables
    Je souhaite lister les tables dont le nom se situe entre deux dates données que j'aurai récupéré d'une autre table:
    SELECT date_creation, date_modification FROM user_activity WHERE user_id=4

    date_create et date_modification sont de type smalldatetime (exemple: 2014-09-10 04:45:02)

    Auriez-vous une idée ou bien une piste ?

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Quelque chose dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT table_name
    FROM INFORMATION_SCHEMA.TABLES
    INNER JOIN user_activity 
    	ON TABLE_NAME BETWEEN 
    		'matable_' + REPLACE(CONVERT(VARCHAR(10), date_creation, 111), '/','_')
    		AND
    		'matable_' + REPLACE(CONVERT(VARCHAR(10), DATEADD(DAY, 1, date_modification), 111), '/','_')
    WHERE user_id=4
    Pourquoi créer une table par jour ? Ce n'est a priori pas une bonne idée !

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Je ne dois pas être loin
    Bonjour,

    Merci beaucoup pour votre retour. C'est en effet probablement quelque chose comme cela, néanmoins comme les tables sont suffixées je pense que ça gène un peu. (J'ai un résultat vide).
    L'idéal aurait été de pouvoir cumuler l'usage de BETWEEN et LIKE :-)

    Concernant le design de la base, je suis d'accord avec vous (déjà remonté à l'éditeur) mais je dois malheureusement faire avec.

    Cordialement,

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Les suffixes ne devraient pas poser de problèmes, en raison du BETWEEN (c'est d'ailleur la raison pour laquelle j'ajoute un jour à la date de fin...)

    C'est en revanche peut être un problème de casse. l'avez-vous bien respectée lorsque vous avez remplacé 'matable' ?

    A défaut, vous pouvez forcer une comparaison insensible à la casse en ajoutant un COLLATE approprié dans le between

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 422
    Points
    7 422
    Billets dans le blog
    1
    Par défaut
    Sinon, avant d'aller plus loin, y'aurais pas un problème (critique) de conception ?
    Pourquoi démultiplier les tables ? Pourquoi ne pas avoir une colonne date ?

  6. #6
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    C'est en fait une grosse application derrière développée par Cisco. Ils ne feront jamais évoluer le schéma de base pour moi.
    Si j'étais mauvaise langue, je dirai que c'est encore une appli développée par un stagiaire ;-)

    Je dois malheureusement faire avec, j'ai bien conscience que c'est loin d'être l'idéal.

  7. #7
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Ca a fonctionné parfaitement, j'avais fait une petite erreur de frappe. Merci beaucoup pour votre contribution.
    Maintenant, je dois requêter dans chacune des tables que j'ai obtenu, j'avance..


    Citation Envoyé par aieeeuuuuu Voir le message
    Les suffixes ne devraient pas poser de problèmes, en raison du BETWEEN (c'est d'ailleur la raison pour laquelle j'ajoute un jour à la date de fin...)

    C'est en revanche peut être un problème de casse. l'avez-vous bien respectée lorsque vous avez remplacé 'matable' ?

    A défaut, vous pouvez forcer une comparaison insensible à la casse en ajoutant un COLLATE approprié dans le between

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

Discussions similaires

  1. Liste de TOUTES les dates entre deux dates (sans table)
    Par boulate dans le forum Requêtes
    Réponses: 5
    Dernier message: 22/08/2013, 11h00
  2. Comment compter les jours par mois entre deux dates
    Par Doo89 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/01/2008, 21h21
  3. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16
  4. [MS-DOS] Compter les nombres de jours entre deux dates diffé
    Par Furius dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 19/02/2006, 13h33
  5. Réponses: 10
    Dernier message: 20/09/2005, 15h32

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