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-ID: 241724

Url: https://administrator.de/forum/ms-sql-problem-mit-select-case-und-datumsformat-241724.html

Ausgedruckt am: 09.04.2025 um 06:04 Uhr

LianenSchwinger
Lösung LianenSchwinger 24.06.2014 aktualisiert um 15:55:42 Uhr
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
emeriks
emeriks 24.06.2014 um 15:54:57 Uhr
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]