itrain-home  
home
 Aktuelle Seite:  knowhow sql tsql datum ageinyearsmonthsdays.asp 
 



 

Transact SQL Script: AgeinYearsMonthsDays.SQL

questions? mailto:info@itrain.de

Download SQL Script

Dieses Script dient nur Demonstrationszwecken. Verwendung des Scripts erfolgt auf eigene Gefahr.


IF EXISTS (SELECT * FROM sysobjects WHERE name = 'AgeInYearsMonthsDays' AND TYPE = 'TF') DROP FUNCTION  dbo.AgeInYearsMonthsDays  
 GO  
 CREATE FUNCTION dbo.AgeInYearsMonthsDays (@Date datetime, @Date2 datetime)  
 RETURNS @age TABLE  (years int , months int, days int)   
 AS  
 BEGIN  
 DECLARE @vorzeichen smallint  
 DECLARE @datumalt datetime  
 DECLARE @datumneu datetime  
 -- Prüfen, welches der beiden Daten das "ältere" ist  
 IF @Date > @Date2   
 BEGIN  
  SET @datumalt = @date2  
  SET @datumneu = @date  
  SET @vorzeichen = -1  
 END  
 ELSE  
 BEGIN  
  SET @datumalt = @date  
  SET @datumneu = @date2  
  SET @vorzeichen = 1  
 END  
 -- Berechnen von Tagen, Monate und Jahren und Einfügen des Datensatzes in die  
 -- Hilfstabelle   
  INSERT INTO @age  
  SELECT CASE   
   WHEN DAY(@datumalt) <= DAY(@datumneu) THEN  
    (DATEDIFF(MONTH, @datumalt, @datumneu) / 12) * @vorzeichen  
   ELSE  
    ((DATEDIFF(MONTH, @datumalt, @datumneu) - 1 )/ 12) * @vorzeichen  
   END ,   
   CASE    
   WHEN DAY(@datumalt) <= DAY(@datumneu) THEN  
    (DATEDIFF(MONTH, @datumalt, @datumneu) % 12) * @vorzeichen  
   ELSE  
    ((DATEDIFF(MONTH, @datumalt, @datumneu) - 1) % 12) * @vorzeichen  
   END,  
   CASE  
   WHEN DAY(@datumalt) <= DAY(@datumneu) Then  
    (DAY(@datumneu) - DAY(@datumalt)) * @vorzeichen  
   ELSE  
    (DATEDIFF(DAY, DATEADD(MONTH, DATEDIFF(MONTH, @datumalt, @datumneu) - 1, @datumalt), @datumneu)) * @vorzeichen  
   END  
  RETURN  
 END  
     
 GO  
 -- Beispielaufruf:  
 SELECT * FROM dbo.AgeInYearsMonthsDays('20000801', '20020721')  
 /* Ergebnis:  
   
 years       months      days          
 ----------- ----------- -----------   
 1,00        11,00       20,00  
   
 */
Leerraum

Dokument zum Drucken anzeigen
English Pages
Link-Tipp zum Thema "Visual Basic": www.cobb.com/ivb/

Die Web Site zur Zeitschrift