27. april 2017 - 20:46Der er
8 kommentarer og 1 løsning
incompatible in the add operator
Jeg sidder og prøver at danne en mail i SQL som skal sendes med dbmail og det virker sådan set også fint nok. Men jeg prøver at indsætte en dato som jeg gerne vil konvertere til normal visning, men støder så en i et andet problem som jeg ikke lige ved hvordan jeg løser.
Her er min sql: DECLARE @modtager varchar(MAX) DECLARE @bodydata1 varchar(MAX) DECLARE @bodydata2 varchar(MAX) DECLARE @bodydata3 varchar(MAX) DECLARE @bodydata4 date DECLARE @BodyText varchar(MAX)
SET @modtager = (SELECT Email FROM [Test].[dbo].[Medlemmer] WHERE Rolle = 'Formand') SET @bodydata1 = (SELECT nFornavn FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE())) SET @bodydata2 = (SELECT nMellemnavn FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE())) SET @bodydata3 = (SELECT nEfternavn FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE())) SET @bodydata4 = (SELECT fodselsdag FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE())) SET @BodyText = + @bodydata1 +' '+ @bodydata2 +' '+ @bodydata3 +' har fødselsdag d. '+ CONVERT(date, @bodydata4) +' han bliver [N]år.' + CHAR(13)+CHAR(10) + N'Send John en hilsen.'
IF EXISTS (SELECT fodselsdag FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE())) EXEC msdb.dbo.sp_send_dbmail @profile_name = 'DBMail', @body_format = 'TEXT', @recipients = @modtager, @subject = N'Fødselar', @Body = @BodyText ELSE PRINT GETDATE() GO og her er den fejl jeg får: Msg 402, Level 16, State 1, Line 14 The data types varchar and date are incompatible in the add operator.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det kan jeg godt, men jeg har prøvet og sende mailen med @body = @bodydata4 og det modtager jeg en mail med en dato som ser sådan her ud 2017-04-28 og jeg vil gerne have den skal se sådan her ud 28-04-2017
Hvis jeg smider et SELECT foran så bliver outputtet 1985 Altså SELECT CONVERT(varchar, 2017-04-28, 130) og smider du 2017-04-28 igennem en lommeregner så er resultatet...... Wait for it..... 1985. Jeg er helt lost. Prøver jeg med SELECT CONVERT(varchar, GETDATE(), 130) så er output 2 ????? 1438 9:21:
CONVERT(varchar(MAX), @bodydata4, 105) Den gjorde for resten forskellen, kan ikke forklare hvorfor.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.