25. april 2017 - 20:58Der er
5 kommentarer og 1 løsning
hvis dato er ude i fremtiden så... ellers
Jeg har følgende sql hvor jeg prøver at få dbmail til at sende en mail hvos der findes en dato 7 dage ude i fremtiden i en table. Men det lykkes ikke rigtig for mig.
Hvad gør jeg galt?
DECLARE @modtager varchar(MAX) DECLARE @hfodselsdag date
SET @modtager = (SELECT Email FROM [test].[dbo].[Medlemmer] WHERE Rolle = 'Formand') SET @hfodselsdag = (SELECT fodselsdag FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+7) AND MONTH([Fodselsdag]) = MONTH(GETDATE()))
Syska jeg tager gerne i mod forslag til forbedringer. Jeg er overhoved ikke nogen haj til det her SQL. Jeg er dog godt klar over at min kode har mange linje som sikkert kan samskrives til en, men lige nu koncentrere jeg mig om at få det til at virke, som må det andet komme i anden række.
OG nu har jeg brug for hjælp.
Nedenstående er den kode jeg har lavet, men jeg kan ikke få den til at virke. Prøver jeg og køre den så får jeg følgende fejl. Msg 402, Level 16, State 1, Line 13 The data types nvarchar(max) and date are incompatible in the add operator.
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 +N' har fødselsdag d. '+ CONVERT(date, @bodydata4) +' han bliver [N]år.' + CHAR(13)+CHAR(10) + N'Send John en hilsen.' SET @BodyText = + @bodydata1 +' '+ @bodydata2 +' '+ @bodydata3 +N' har fødselsdag d. 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
Det er så blevet løst, havde skrevet forkert i convert, det er rettet til varchar(MAX) fra date, men det bliver vist som yyyy-mm-dd og jeg vil gerne vise det som dd-mm-yyyy, hvordan gør jeg det?
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.