emeriks
Goto Top

MS SQL Problem mit SELECT, CASE und Datumsformat

Hi,
ich brauche bitte mal nen Tritt ...

Habe eine SQL Abfrage, welche Datumsfelder abfragt: Von - Bis. Wenn das Bis-Feld einen Wert >= '01.01.2099' hat, dann soll statdessen 'unbegrenzt' zurückgeliefert werden.
Meine u.g. Abfrage liefert mir jedoch. "Fehler beim Konvertieren einer Zeichenfolge in einen datetime-Wert."

Wo ist da mein Denkfehler?

E.

SELECT   [Tabelle1].[VonDatum] AS [Von],          
                CASE WHEN [Tabelle1].[BisDatum] < '01.01.2099 00:00:00' THEN [Tabelle1].[BisDatum] ELSE 'unbegrenzt' END AS [Bis]   
FROM     [Tabelle1]        

Content-Key: 241724

Url: https://administrator.de/contentid/241724

Printed on: April 24, 2024 at 10:04 o'clock

Member: LianenSchwinger
Solution LianenSchwinger Jun 24, 2014 updated at 13:55:42 (UTC)
Goto Top
Hallo,

Dein Denkfehler liegt darin, dass Deine Abfrage einmal ein Datum und das andere mal einen String liefern soll.
Abhilfe [Tabelle1].[BisDatum] in einen String wandeln.

G Jörg
Member: emeriks
emeriks Jun 24, 2014 at 13:54:57 (UTC)
Goto Top
Nee, das war jetzt zu einfach! Oder?
Also die verschiedenen Ergebisse müssen alle vom selben Typ sein. Ist ja auch logisch ...
Danke!

So geht es:

SELECT   [Tabelle1].[VonDatum] AS [Von],           
         CASE WHEN [Tabelle1].[BisDatum] < '01.01.2099 00:00:00'  
                  THEN LEFT(CONVERT(VARCHAR, [Tabelle1].[BisDatum], 120), 10) 
                   ELSE 'unbegrenzt' END AS [Bis]    
FROM     [Tabelle1]