2016-07-26 6 views
-1
declare @DOB int 
declare @age int 
select @DOB=coalesce(@DOB+'23/05/1994','') 
set @age=DATEDIFF(YEAR,@DOB,GETDATE()) 

select @age 

(or) 

select DATEDIFF(MONTH,'23/05/1994','23/06/1995') 

Die Umwandlung versagte, während die VARCHAR-Wert-Umwandlungs '23/05/1994' in dem Datentyp int.Fehler bei der Konvertierung, wenn die VARCHAR-Wert-Umwandlungs '23/05/1994' in dem Datentyp int

Ich bekomme diese Antwort beim Ausführen der oben genannten Abfragen, bitte helfen Sie mir.

+3

'coalesce (@ DOB + '23/05/1994 ',' ')' was versuchst du hier zu tun? –

+4

Huh? Warum sollte ein Geburtsdatum als Integer eingegeben werden? –

+0

Verwendung: 'MM/DD/YYYY' Format –

Antwort

0

Da Sie das Format dd/mm/yyyy verwenden, verwenden Sie stattdessen das Format mm/dd/yyyy. Für Ihren Fall müssen Sie das Datum in mm/dd/yyyy durch die CONVERT(DATETIME, 'date', 105) umwandeln.

select @DOB=coalesce(@DOB+'23/05/1994','') 

die obige Abfrage ist ungültig, hoffen, dass Sie benötigen den Tag/Monat auf den Datumswert, in diesem Fall hinzufügen können Sie DATEADD So ist der Arbeits Code

verwenden:

declare @DOB int = 2; 
declare @age int; 
DECLARE @DateOfBirth DATETIME; 
--select @DOB=coalesce(@DOB + '23/05/1994','') 
SELECT @DateOfBirth=DATEADD(DAY, @DOB, CONVERT(DATETIME, '23/05/1994', 105)); 
set @age=DATEDIFF(YEAR,@DateOfBirth,GETDATE()) 
select @age; 

--(or) 

select DATEDIFF(MONTH, CONVERT(DATETIME,'23/05/1994', 105), CONVERT(DATETIME,'23/06/1995', 105)); 
0

Sie können versuchen, DOB als Datum zu setzen, um die Routine zu vereinfachen. Es würde am Ende so enden:

declare @DOB date 
declare @age int 
select @DOB='05/23/1994' 
set @age=DATEDIFF(YEAR,@DOB,GETDATE()) 
select @age 
Verwandte Themen