Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : Comment calculer l'age du capitaine (différences sur des dates) ?

Comment calculer la différence d'une date par rapport à une autre avec SQL Server, le tout en année ou en mois ?

Rien de plus simple me direz vous, la réponse c'est DATEDIFF :

DECLARE

@debut datetime
DECLARE
@fin
datetime

SET
@debut = '20070404'
SET @fin =
'19780404'

SELECT DATEDIFF(YEAR, @fin, @debut)

Pas de problème ici j'ai bien eu 29 ans cette année (je me fais vieux je sais)...
Mais remplaçons 20070404 par 20070403... La veille de mon anniversaire d'après SQL Server j'avais déjà 29 ans ????

Pourquoi, parce que SQL Server fait uniquement la différence sur la composante année de la date résultat, il y a une période où votre age est faux ! Le problème est le même en réalisant la différence avec les mois.

Pour ne pas vieillir avant l'heure voici une méthode juste pour réaliser ce calcul (ce n'est sans doute pas la seule, mais l'une des plus éfficaces)

DECLARE @debut datetime
DECLARE
@fin
datetime

SET
@debut =
'20070403'
SET @fin =
'19780404'

SELECT (0 + CONVERT(char(8),@debut,112) - CONVERT(char(8),@fin,112)) / 10000

L'idée est de soustraire la date en format YYYYMMDD ou AAAAMMJJ et de tronquer le résultat pour obtenir l'age.
Le 0 + n'est là que pour réaliser une conversion implicte.
C'est Steve Kass autre MVP Server qui est l'inventeur de cette formule fort utile. Merci à lui !

Pour le calcul de la différence sur des jours, celà donne :

DECLARE @debut datetime
DECLARE
@fin datetime

SET
@debut = '19780404'
SET @fin = '20070403'

SELECT DATEDIFF(DAY, @debut, @fin)


Merci à Cédric pour le calcul.

Bon calcul...

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié lundi 2 juillet 2007 20:39 par christian
Classé sous : ,

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01