Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/01/2012, 11h50   #1
Invité régulier
 
Inscription : février 2007
Messages : 36
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 36
Points : 7
Points : 7
Par défaut Trouver un enregistrement DATETIME > à aujourd'hui sur TOUTES les tables

Bonjour


Je cherche à faire une recherche de tous les enregistrements, toutes tables confondues, dont la colonne de type DATETIME est supérieure à aujourd'hui.

Je sais trouver l'ensemble des colonnes de type DATETIME avec la tables dans laquelle ils se trouvent avec cette requette

Code :
1
2
SELECT TABLE_name,COLUMN_name FROM information_SCHEMA.COLUMNS 
WHERE Data_type='DATEtime'
Pourrais je exploiter ceci pour aller vérifier les enregistrements des colonnes en questions dans leurs tables respectives afin de trouver des enregistrements supérieur à ce jour ?

Ou alors il y a un autre moyen ?


Merci d'avance
Gigli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 11h52   #2
Modérateur
 
Homme
Administrateur de base de données
Inscription : août 2007
Messages : 1 159
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Belgique

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

Informations forums :
Inscription : août 2007
Messages : 1 159
Points : 1 608
Points : 1 608
Citation:
Envoyé par Gigli Voir le message
Je sais trouver l'ensemble des colonnes de type DATETIME avec la tables dans laquelle ils se trouvent avec cette requette

Code :
1
2
SELECT TABLE_name,COLUMN_name FROM information_SCHEMA.COLUMNS 
WHERE Data_type='DATEtime'
Pourrais je exploiter ceci pour aller vérifier les enregistrements des colonnes en questions dans leurs tables respectives afin de trouver des enregistrements supérieur à ce jour ?
Oui, construisez des requetes dynamiques a partir de ces informations.
Ptit_Dje est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 11h54   #3
Invité régulier
 
Inscription : février 2007
Messages : 36
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 36
Points : 7
Points : 7
Citation:
Envoyé par Ptit_Dje Voir le message
Oui, construisez des requetes dynamiques a partir de ces informations.
Merci pour cette réponse ultra rapide

Mais j'aimerais vous quémander ici de l'aide justement pour la syntaxe de la dite requête dynamique.
Gigli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 13h08   #4
Modérateur
 
Homme
Administrateur de base de données
Inscription : août 2007
Messages : 1 159
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Belgique

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

Informations forums :
Inscription : août 2007
Messages : 1 159
Points : 1 608
Points : 1 608
Tout depend de ce que vous souhaitez faire...

Celle-ci va vous generer un script que vous pourrez apres copier et executer manuellement.

Code :
1
2
3
 
SELECT 'if exists (select 1 from ' + TABLE_name + ' where ' + COLUMN_name + ' > getdate()) begin print ''' + TABLE_NAME + ' - ' +  COLUMN_name + ''' end' FROM information_SCHEMA.COLUMNS 
WHERE Data_type='DATEtime'
Apres je vous laisse regarder comment vous servir de cela pour vos besoins specifiques.
Ptit_Dje est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 14h50   #5
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
Hello.
Histoire de vous donner une piste supplémentaire, voici un petit script que j'utilise pour obtenir les dates les plus récentes contenus dans les colonnes de type datetime. Ça donne parfois un indice sur l’inactivité de certaine application... (ok, c'est loin d'être optimal mais ça me dépanne parfois)
Je le donne tel quel, à vous de l'adapter suivant vos besoins.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-- surveillance des bases de données : donne les dernières dates entrées dans des champs de type datetime
CREATE TABLE #TableCount ( table_schema varchar(250), table_name varchar(250), column_name varchar(250), min_date datetime, max_date datetime, card int
	PRIMARY KEY ( table_schema , table_name , column_name ) )
 
declare @sql nvarchar(1500)
DECLARE db_cursor CURSOR FOR 
	SELECT N'insert into #TableCount select '''+ table_schema +''' table_schema, ''' + table_name + ''' table_name, ''' + column_name + ''' column_name, min('+column_name+') min_date , max('+column_name+') max_date , count(*) card from ['+ table_schema+ '].['+ table_name + ']' REQ
	FROM information_schema.COLUMNS
	WHERE data_type = 'datetime'
 
OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @sql
 
WHILE @@FETCH_STATUS = 0 
BEGIN 
	--print @sql
	exec sp_executesql @sql
	FETCH NEXT FROM db_cursor INTO @sql 
END 
CLOSE db_cursor 
DEALLOCATE db_cursor
 
SELECT * FROM #TableCount order by max_date desc 
DROP TABLE #TableCount
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h31.


 
 
 
 
Partenaires

Hébergement Web