Jag har en sql server-tabell (version 2000) som bl a innehåller några datetime-kolumner. Ibland har man satt ett datum 9000-01-01 00:00:00.000 för att markera att inget slutdatum är satt. Nu vill man inte visa det datumet, utan filtrera bort det i select-satsen. Provar med: nej, jag vill inte uppdatera fältet till null. Datumet 9000-01-01 skall ligga kvar, det är bara i resultatet i min select jag vill ha null. Använd case. Exempel: Replace används för strängar, datetime representeras numeriskt i databasen. Använd som sagt case, och om du helt vill slippa strängkonverteringen så kan du skriva t ex: Instämemr med ovanstående frågeställare. varför inte använda databasen som det är tänkt att den skall användas istället för att hitta på egna lösningar som garanterat är krångligare att jobba med? REPLACE
REPLACE(jh.toDate, '9000-01-01 00:00:00.000', null) AS toDate,
..och det ger null, men ger även null på de raderna som innehåller andra datum än '9000-01-01 00:00:00.000'!
Har även testat:
REPLACE(jh.toDate, '9000-01-01 00:00:00.000', '') AS toDate,
..men det ger resultatet Jan 1 9000 12:00AM
Hur tusan löser man detta!?
mvh
henrikSv:REPLACE
Sv: REPLACE
case when jh.toDate < '2100-01-01' then jh.toDate else null endSv:REPLACE
<CODE>
SELECT CASE WHEN YEAR(datum) = 9000 THEN NULL ELSE datum END datum
</CODE>
/PelleSv: REPLACE